使い方
参考:
初心者は覚えておきたい RubyGems のコマンドまとめ – Qiita
Bundler を使った RubyGems の管理について | 30歳からのプログラミング
そろそろ整理しておきたい、Gemコマンドの使い方 | ばくのエンジニア日誌
gem install コマンド
gem
コマンドで Gem をインストールする。
$ gem install nokogiri
参考:
gem install | RubyGems Guides [Official]
gem list コマンド
インストール済み Gem の一覧を確認する。
$ gem list
参考:
How do I list all versions of a gem available at a remote site? – Stack Overflow
gem update コマンド
インストール済み Gem のバージョンを更新する。
$ gem update
参考:
gem update | RubyGems Guides [Official]
gem cleanup コマンド
Gem の古いバージョンをアンインストールする。
$ gem cleanup
参考:
gem cleanup | RubyGems Guides [Official]
gem search コマンド
名前が完全に一致する Gem のみを表示する。
$ gem search rails -e
全てのバージョンを表示する。
$ gem search bundler -ae
オプション
-a
/ --all
:全てのバージョンを表示する。
-e
/ --exact
:名前が完全に一致する Gem のみを表示する。(指定しない場合は部分一致を含む。)
参考:
gem search | RubyGems Guides [Official]
ビルド/インストール
$ git clone https://github.com/user/gem_name.git -b v1.2.3 --depth 1 $ cd gem_name $ gem build gem_name.gemspec $ gem install gem_name-1.2.3.gem
参考:
Git で clone した Gem をインストールする | DIGITAL SQUADブログ
git clone でもってきたローカル Gem をインストールする方法 | DQNEO 起業日記
gem build | RubyGems Guides [Official]
ヘルプ
ヘルプを表示する。
$ gem help
コマンド一覧を表示する。
$ gem help commands
参考:
gem help | RubyGems Guides [Official]
環境を確認する
$ gem environment
もしくは、省略して
$ gem env
参考:
Ruby が参照してる Gem のパスやインストール済 Gem を確認する方法 – Qiita
インストール先を確認する
$ gem env gemdir
もしくは、
$ gem env home
参考:
Gem パッケージのインストール先を調べる | まくまくノート
Where do gems install? – Stack Overflow
--no-document
参考:
Gem のインストールで `--no-document` を付けると77倍早い – Qiita
gem install --no-ri –no-rdoc は gem install -N にした方が良い – Qiita
gemrc の --no-ri と --no-rdoc、deprecated な option なのでみなおしたほうがいいかもですよ – Qiita
.gemrc
参考:
Gem のインストール先に rbenv が指すものと Gem.user_dir があることを知らなくてハマった話 | わすれっぽいきみえ
peco で Gem のディレクトリに移動する
参考:
peco で Bundler 管理下にある Gem のディレクトリに移動する – Qiita
依存を考慮せずに一つの Gem だけをインストールする
参考:
Removing a dependency while installing a gem? – Stack Overflow
ローカルの Gem をインストールする
参考:
Is it possible to bundle / install gems from a local cache? – Stack Overflow
デフォルト Gem
- デフォルト Gem は、
$(gem env gemdir)/specifications/default
ディレクトリに gemspec がある。 - アンインストールできない。(更新はできる。)
gem list
でバージョン番号がdefault: x.y.z
と表示される。- デフォルト Gem は
bundle
していなくてもrequire
で読み込める。(新しい Gem をbundle
でインストールした場合、新しいバージョンの Gem に存在しなくてデフォルト Gem に存在するファイルが読めてしまう。バグ?仕様?)
デフォルト Gem の gemspec を確認する。
$ ls "$(gem env gemdir)/specifications/default"
参考:
bundled gem と default gem の違い | @znz blog
bundled gem と default gem の違いの具体例 | @znz blog
Default Gems Bundled with Ruby | zzz.buzz
Default Gems Hinder Bundler | Josua Schmid
rg v3 – gem update behavior · Issue #2349 · rubygems/rubygems – GitHub
improve gem install --default · Issue #677 · rubygems/rubygems – GitHub
How to make a specific gem version as default? – Stack Overflow
バージョンコンフリクト
Gemfile.lock
に記述されているバージョンと矛盾がある。→bundle update
で可能な範囲で最新バージョンの Gem に解決する。(Gemfile.lock
を更新する。)Gemfile
に記述したバージョンに矛盾があり解決できない。→Gemfile
を編集する。(もしくは、必要に応じて各 Gem の gemspec を修正する。)- Bundler のバージョンが合っていない。→
gem install bundler
で必要なバージョンの Bundler をインストールする。もしくは、gem update bundler
で Bundler のバージョンを更新する。 - 何かがバグっている。→
vendor/bundle
とGemfile.lock
を削除して、最初からbundle install
をやり直す。
参考:
Rails 5 で bundle install をするときにバージョンコンフリクトでつまったメモ – Qiita
不要な Gem をまとめてアンインストールする
デフォルトではないインストール済み Gem の一覧を作成する。
#! /usr/bin/env bash
# ---------------------------------------------
# Script to Manage RubyGems (v1.0.0)
# ---------------------------------------------
gem list > all_gems.txt
gem list | grep -v "default:" | cut -d " " -f 1 > gem_list.txt
IFS=$'\n'
for gem in $(cat gem_list.txt); do
gem dependency $gem \
| grep -v -E "^Gem\\b" \
| grep -v -E "\\bdevelopment\\)" \
| awk '{ print $1 }'
done | sed '/^$/d' > dependency.txt
sort dependency.txt | uniq > uniq_dependency.txt
cat gem_list.txt | grep -v -f uniq_dependency.txt > requirements.txt
rm dependency.txt uniq_dependency.txt
echo
gem list $(cat requirements.txt) | cat
Code language: Bash (bash)
all_gems.txt
:インストール済み Gem のリストgem_list.txt
:デフォルトではない Gem のリストrequirement.txt
:環境を再現するのに最低限必要な Gem のリスト
アンインストール
デフォルトではない Gem を全てアンインストールする。
$ xargs -a gem_list.txt gem uninstall -aIx $ gem list > minimum_gems.txt
再インストール
環境を再現する。(※ Gem のバージョンが変わる可能性があり、また、間接的な依存 Gem が変更される可能性がある。)
$ xargs -a requirements.txt gem install $ gem list | diff -u -w all_gems.txt - | tee gems_diff.txt $ gem list > all_gems.txt
更新
インストール済み Gem を全て更新する。
$ gem update $ gem list | diff -u -w all_gems.txt - | tee gems_diff.txt $ gem list > all_gems.txt
参考:
インストールされている Gem を全て削除する。- Qiita
あえて言うほどではないけれども Gem を一括削除する方法 | TECHSCORE BLOG
Gem を間違えてグローバルにインストールしてしまった場合 | Technical Notes
Removing all installed Gems and starting over – Stack Overflow
specific_install
GitHub から Gem をインストールするための gem specific_install
コマンドを追加する。
リポジトリ:
参考:
gem install で GitHub リポジトリにある最新版をインストールする – Qiita
GitHub のリポジトリから直接 gem install する | deadwood
GitHub のブランチにある gem をインストールする方法 | noanoa 日々の日記
FileUtils が二重にロードされる
参考:
rails c した際に fileutils の警告が大量に出た場合 | 約束の地
「rails s」で warning: already initialized constant が出る | 新人SEの気まぐれ日記
fileutils conflict in Ruby 2.5.1 · Issue #22 · ruby/fileutils – GitHub
`warning:` `already` initialized constant FileUtils::VERSION – Stack Overflow
キャッシュ
参考:
仕組み
参考:
RubyGems の install は何をやっているか | freedom-man.com
ドキュメント
Command Reference | RubyGems.org [Official]
gem_dir
※メンテナンスされていない。
リポジトリ: