296
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Rubyが参照してるgemのパスやインストール済gemを確認する方法

前置き

現在、Ruby/Railsでの開発について教えてる人がいるのですが、pryやirbで日本語入力を可能にするという記事を見つけて

「そういえば、お互いにPryの環境で日本語入力できず不便だったので環境を見なおしましょう!」

と誘って手順に従って作業したのですが、その後互いにハマった(ハマってる)ことがありました。

トラブル解決の時に

  • 現在使ってるRubyのパスはどこか?
  • 現在使ってるRubyが参照してるgemのパスはどこか?
  • インストール済のgemってどうやって確認するか

というのが恥ずかしながらすぐにわからなかったので調べたことを書いておきます

私の環境

  • Mac OS X 10.9.5
  • Ruby
    • rbenvを利用
      • ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]

現在使ってるRubyのパスやRubyが参照してるgemのパスを確認するのにgem environmentが便利だった

2008年とかなり昔ですがこのエントリで紹介されてるgem environmentが便利だったので自分用にメモしておきます

システム標準のRubyの情報

rbenv利用してるので一旦システム標準のRubyに切り替えます。

rbenv local system

確認します

rbenv versions
* system (set by /Users/myuser/.ruby-version)
  2.0.0-p353
  2.1.0
  2.1.1

これで切り替ったことが確認できました。念のためRubyのバージョンをチェック

ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]

gem environmentで確認

以下のように実行します。

gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0 (2014-05-08 patchlevel 481) [universal.x86_64-darwin13]
  - INSTALLATION DIRECTORY: /vagrant
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /vagrant/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-13
  - GEM PATHS:
     - /vagrant
     - /global
     - /Library/Ruby/Gems/2.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/

上記実行結果でRUBY EXECUTABLE(/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby)を見ればRuby実行時のRubyのパスが確認できるし、gemのパスもGEM PATHSという項目があるのでこのあたりで確認できるんですね。

rbenvでインストールしたRuby2.1.2の情報

現在は

rbenv versions
* system (set by /Users/myuser/.ruby-version)
  2.0.0-p353
  2.1.0
  2.1.1
  2.1.2

という感じでシステム標準のものになってるので以下で切り替えます。

rbenv local 2.1.2

念のためRubyのバージョンを確認します。

ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]

こっちの場合のgem environmentはこうなってました

gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.2 (2014-05-08 patchlevel 95) [x86_64-darwin13.0]
  - INSTALLATION DIRECTORY: /Users/myuser/.rbenv/versions/2.1.2/gemsets/vagrant
  - RUBY EXECUTABLE: /Users/myuser/.rbenv/versions/2.1.2/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/myuser/.rbenv/versions/2.1.2/gemsets/vagrant/bin
  - SPEC CACHE DIRECTORY: /Users/myuser/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-13
  - GEM PATHS:
     - /Users/myuser/.rbenv/versions/2.1.2/gemsets/vagrant
     - /Users/myuser/.rbenv/versions/2.1.2/gemsets/global
     - /Users/myuser/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/myuser/.rbenv/versions/2.1.2/bin
     - /Users/myuser/.rbenv/versions/2.1.2/gemsets/global/bin
     - /Users/myuser/.rbenv/versions/2.1.2/gemsets/vagrant/bin
     - /usr/local/Cellar/rbenv/0.4.0/libexec
     - /usr/local/heroku/bin
     - /Users/myuser/.rbenv/shims
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/bin

インストール済のgemってどうやって確認するか

これはいっつも忘れてしまうのですが

gem list

にて確認できますね。rbenv にてインストールした 2.1.2でのgem一覧はこうなってました。


gem list

*** LOCAL GEMS ***

bigdecimal (1.2.4)
bundle (0.0.1)
bundler (1.7.11)
io-console (0.4.2)
json (1.8.1)
minitest (4.7.5)
psych (2.0.5)
rake (10.1.0)
rdoc (4.1.0)
test-unit (2.1.2.0)

特定のgemってインストール済かどうか確認する

これまで自分の場合はgem listの実行結果を、標準入出力を組み合わせてコマンドを接続するUnix系OS標準の仕組みのパイプを使って

gem list | grep bundler

という感じでgem listの検索結果をgrepコマンドに渡して該当のgemがあるかどうか確認してましたがbundleコマンドにパスが通っていなかったときの対処法の記事中にあったgem contentsでも確認できますね


gem contents bundler

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
296
Help us understand the problem. What are the problem?