【Ruby】Gemコマンドの使い方まとめ

スポンサーリンク

Gemのよく使うコマンドについて使い方をまとめました。オプションとかも全ては書けないので必要かなと思うものだけにしてます。

インストール

Gemをインストールする場合はgem install [gemname] [options]コマンドを実行します。

オプション 機能
-v, --version バージョン指定
-​-[no-]document RDoc / riドキュメントをインストールする / しない

バージョンの指定についてはいくつか方法があります。

指定方法 意味
"= x.x.x", x.x.x x.x.xバージョン
">= x.x.x" x.x.x以上のバージョン
">= x.x.x, < y.y.y" x.x.x以上、y.y.y未満のバージョン
"~> 2.0" 2.xの最新バージョン
"~> 2.1.0" 2.1.xの最新バージョン

ドキュメントのオプションについては-​-[no-]rdoc-​-[no-]riがよく出てきますが、今は非推奨になってます。ただし、Ruby1.9系の場合は-​-[no-]documentは使えないみたいです。

毎回オプションを付けるのが面倒な人は~/.gemrcで以下を追加しておきます。

install: --no-document
update: --no-document

インストール済みGemのRDocとriをインストールする場合は次のコマンドを使います。--allとすると全てのGemが対象になりますが、特定のGemを指定することもできます。

$ gem rdoc --all --ri

RDocドキュメントを見たい場合はgem serverコマンドを実行してブラウザでhttp://localhost:8808にアクセスします。

$ gem server
Server started at http://0.0.0.0:8808
Server started at http://[::]:8808

オプションは他にも色々あるので気になる人はReferenceを見て下さい。

 Command Reference [gem-install] - RubyGems Guides

アンインストール

Gemをアンインストールする場合はgem uninstall [gemname] [options]コマンドを実行します。

 Command Reference [gem-uninstall] - RubyGems Guides

Gemを探す

ローカルまたはリモートにあるGemパッケージを検索するには、gem list [STRING] [options]gem search [STRING] [options]コマンドを使いますが、この2つはほぼ同じ動作をします。

listコマンドの場合はデフォルトでローカルを検索し、searchコマンドの場合はリモートを検索するので、インストール済みのGemを検索する場合はlistインストールしてないGemの検索にはsearchを使い分けるのがいいかと思います。

オプション 機能
-d, --[no-]details Gemに関する詳細を表示する
-l, --local localを対象とする
-r, -​-remote remoteを対象とする
-b, -​-both local, remoteどちらも対象とする
-a, -​-all Gemのバージョンを全て表示

gem listでGem名とオプションを省略した場合はローカルにインストールされている一覧が表示されます。gem searchとするとリモートのGemが全て表示されてしまいますのでやめましょう。

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.4)
bundler (1.7.9)
coderay (1.1.0)
io-console (0.4.2)
...

検索には正規表現を使う事もできます。というか使った方がいいです。

$ gem search ^rails$ -a

*** REMOTE GEMS ***

rails (4.2.0, 4.1.9, 4.1.8, 4.1.7.1, 4.1.7, 4.1.6, 4.1.5, 4.1.4, 4.1.3, 4.1.2, 4.1.1, 4.1.0, 4.0.13, 4.0.12, 4.0.11.1, 4.0.11, 4.0.10, 4.0.9, 4.0.8, 4.0.7, 4.0.6, 4.0.5, 4.0.4, 4.0.3, 4.0.2, 4.0.1, 4.0.0, 3.2.21, 3.2.20, 3.2.19, 3.2.18, 3.2.17, 3.2.16, 3.2.15, 3.2.14, 3.2.13, 3.2.12, 3.2.11, 3.2.10, 3.2.9, 3.2.8, 3.2.7, 3.2.6, 3.2.5, 3.2.4, 3.2.3, 3.2.2, 3.2.1, 3.2.0, 3.1.12, 3.1.11, 3.1.10, 3.1.9, 3.1.8, 3.1.7, 3.1.6, 3.1.5, 3.1.4, 3.1.3, 3.1.2, 3.1.1, 3.1.0, 3.0.20, 3.0.19, 3.0.18, 3.0.17, 3.0.16, 3.0.15, 3.0.14, 3.0.13, 3.0.12, 3.0.11, 3.0.10, 3.0.9, 3.0.8, 3.0.7, 3.0.6, 3.0.5, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 2.3.18, 2.3.17, 2.3.16, 2.3.15, 2.3.14, 2.3.12, 2.3.11, 2.3.10, 2.3.9, 2.3.8, 2.3.7, 2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.2.3, 2.2.2, 2.1.2, 2.1.1, 2.1.0, 2.0.5, 2.0.4, 2.0.2, 2.0.1, 2.0.0, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.6, 1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.0, 0.14.4, 0.14.3, 0.14.2, 0.14.1, 0.13.1, 0.13.0, 0.12.1, 0.12.0, 0.11.1, 0.11.0, 0.10.1, 0.10.0, 0.9.5, 0.9.4.1, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.5, 0.8.0)

listコマンドでも同じ事ができます。

$ gem list ^rails$ -ra

*** REMOTE GEMS ***

rails (4.2.0, 4.1.9, 4.1.8, 4.1.7.1, 4.1.7, 4.1.6, 4.1.5, 4.1.4, 4.1.3, 4.1.2, 4.1.1, 4.1.0, 4.0.13, 4.0.12, 4.0.11.1, 4.0.11, 4.0.10, 4.0.9, 4.0.8, 4.0.7, 4.0.6, 4.0.5, 4.0.4, 4.0.3, 4.0.2, 4.0.1, 4.0.0, 3.2.21, 3.2.20, 3.2.19, 3.2.18, 3.2.17, 3.2.16, 3.2.15, 3.2.14, 3.2.13, 3.2.12, 3.2.11, 3.2.10, 3.2.9, 3.2.8, 3.2.7, 3.2.6, 3.2.5, 3.2.4, 3.2.3, 3.2.2, 3.2.1, 3.2.0, 3.1.12, 3.1.11, 3.1.10, 3.1.9, 3.1.8, 3.1.7, 3.1.6, 3.1.5, 3.1.4, 3.1.3, 3.1.2, 3.1.1, 3.1.0, 3.0.20, 3.0.19, 3.0.18, 3.0.17, 3.0.16, 3.0.15, 3.0.14, 3.0.13, 3.0.12, 3.0.11, 3.0.10, 3.0.9, 3.0.8, 3.0.7, 3.0.6, 3.0.5, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 2.3.18, 2.3.17, 2.3.16, 2.3.15, 2.3.14, 2.3.12, 2.3.11, 2.3.10, 2.3.9, 2.3.8, 2.3.7, 2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.2.3, 2.2.2, 2.1.2, 2.1.1, 2.1.0, 2.0.5, 2.0.4, 2.0.2, 2.0.1, 2.0.0, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.6, 1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.0, 0.14.4, 0.14.3, 0.14.2, 0.14.1, 0.13.1, 0.13.0, 0.12.1, 0.12.0, 0.11.1, 0.11.0, 0.10.1, 0.10.0, 0.9.5, 0.9.4.1, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.5, 0.8.0)

 Command Reference [gem-list] - RubyGems Guides

 Command Reference [gem-search] - RubyGems Guides

アップデートの確認

gem outdated [options]コマンドを使うとアップデートのあるGemを確認できます。

$ gem outdated
bigdecimal (1.2.4 < 1.2.5)
bundler (1.7.9 < 1.7.11)
json (1.8.1 < 1.8.2)
...

 Command Reference [gem-outdated] - RubyGems Guides

アップデート

Gemをアップデートするにはgem update [gemname] [options]コマンドを使います。Gem名を省略した場合は全て対象になります。

$ gem update rdoc --no-document
Updating installed gems
Updating rdoc
Fetching: rdoc-4.2.0.gem (100%)
rdoc's executable "rdoc" conflicts with /Users/tasukujp/.rbenv/versions/2.1.5/bin/rdoc
Overwrite the executable? [yN]  y
...
Gems updated: rdoc

 Command Reference [gem-update] - RubyGems Guides

Gemの掃除

アップデートすると古いバージョンのGemも残ります。gem listで確認するとバージョンが複数表示されてるのがそうです。

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.5, 1.2.4)
bundler (1.7.11, 1.7.9)
coderay (1.1.0)
io-console (0.4.2)
json (1.8.2, 1.8.1)
...

gem cleanup [gemname] [options]コマンドを使うと古いバージョンのGemを削除してくれます。Gem名を省略した場合は全て対象になります。

$ gem cleanup bundler
Cleaning up installed gems...
Attempting to uninstall bundler-1.7.9
Successfully uninstalled bundler-1.7.9
Clean Up Complete

 Command Reference [gem-cleanup] - RubyGems Guides

Gemの場所を探す

gem which [gemname] [options]コマンドでインストールしたGemのPATHが分かります。

$ gem which bundler
/Users/tasukujp/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.7.11/lib/bundler.rb

 Command Reference [gem-which] - RubyGems Guides

ヘルプ

Gemコマンドの使い方を調べます。

$ gem help install
Usage: gem install GEMNAME [GEMNAME ...] [options] -- --build-flags [options]

  Options:
        --platform PLATFORM          Specify the platform of gem to install
    -v, --version VERSION            Specify version of gem to install
        --[no-]prerelease            Allow prerelease versions of a gem
                                     to be installed. (Only for listed gems)
...

 Command Reference [gem-help] - RubyGems Guides

environmentコマンドを使うと色々な情報が見れます。

$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.5
  - RUBY VERSION: 2.1.5 (2014-11-13 patchlevel 273) [x86_64-darwin14.0]
  - INSTALLATION DIRECTORY: /Users/tasukujp/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /Users/tasukujp/.rbenv/versions/2.1.5/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/tasukujp/.rbenv/versions/2.1.5/bin
  - SPEC CACHE DIRECTORY: /Users/tasukujp/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/tasukujp/.rbenv/versions/2.1.5/etc
  - RUBYGEMS PLATFORMS:
...

 Command Reference [gem-environment] - RubyGems Guides

Gemのコマンドはgem eまたはgem envのように他のコマンドと重複しない位置まで省略することもできます。

関連記事

 【Ruby】Gem本体のアップデートについて - TASK NOTES

 【Ruby】bundlerの使い方 (Gem管理) - TASK NOTES