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

## 前置き

現在、Ruby/Railsでの開発について教えてる人がいるのですが、[pryやirbで日本語入力を可能にする](http://qiita.com/kidachi_/items/d0137d96bed9ac381fd5)という記事を見つけて

「そういえば、お互いに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年とかなり昔ですが[このエントリ](http://railspress.matake.jp/rubygems-setting-info-gem-environment)で紹介されてるgem environmentが便利だったので自分用にメモしておきます


### システム標準のRubyの情報

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

```sh
rbenv local system
```

確認します

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

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


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


### gem environmentで確認

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

```sh
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の情報

現在は

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

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

```sh
rbenv local 2.1.2
```

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

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

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

```sh
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ってどうやって確認するか

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

```shell-session
gem list
```

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

```shell-session

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標準の仕組みのパイプを使って

```shell-session
gem list | grep bundler
```

という感じでgem listの検索結果をgrepコマンドに渡して該当のgemがあるかどうか確認してましたが[bundleコマンドにパスが通っていなかったときの対処法](http://qiita.com/hyshhryk/items/7e728ad57d963454b142)の記事中にあったgem contentsでも確認できますね

```shell-session

gem contents bundler
```