前置き
現在、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]
- rbenvを利用
現在使ってる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