rbenvのgemインストール位置について調べてみた

加筆修正するかもしれませんが、現時点での知識と見解を記載。

インストールや設定に必要なコマンドに関する記述には期待しないでください。

 

あと、ユーザ名部分は user_name としてます。使っているユーザ名に置き換えて考えてください。

rbenvに関して

バージョン分けてインストールしている。

どのように動作するか | rbenv日本語リファレンス | Ruby STUDIO

 

 

((

各バージョンのRubyは、~/.rbenv/versions下の自身のディレクトリ内にインストールされます。

例えば、下記のように各バージョンのRubyをインストールすることが可能です。

  • ~/.rbenv/versions/1.8.7-p371/
  • ~/.rbenv/versions/1.9.3-p327/
  • ~/.rbenv/versions/jruby-1.7.1/

rbenv用のバージョン名は、単純に~/.rbenv/versions内のディレクトリの名前になります。

 

))

 

バージョンごとにディレクトリ分けてます。

 

gemもディレクトリごとに分けてます

ここ重要。特にbundlerとは別に考えた時に*1

 

gemの環境を表示するコマンドを入力すると

<pre>

$ gem environment 

</pre>

 

では

gemのインストール先に関する情報が表示される*2

 

gemのPATHだけ抜粋すると

<pre>

- GEM PATHS:

     - /Users/user_name/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0

     - /Users/user_name/.gem/ruby/2.2.0

</pre>

 

のように、rbenvで現在選択しているrubyのバージョンと、ユーザごとのgemのうち2.2.0シリーズ?が表示される

 

なお、システム上に直接インストールされているruby*3

を選択した状態だと

 

<pre>

 - GEM PATHS:

     - /Library/Ruby/Gems/2.0.0

     - /Users/user_name/.gem/ruby/2.0.0

     - /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0

</pre>

 

システムの中に入っているrubygemとユーザごとのrubygem?が表示されます。

 

rbenv使ってる時に、gemはどこにインストールされるのか?

選択しているバージョンのgem管理用ディレクトリ ということになる。

2.2.3を選択した状態からnokogiriを取り込んで試しました。

 

先ほど確認したrbenv管理下のgemディレクトリの中身を見てみる。

 

 

<pre>

$ ls /Users/user_name/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0

bundler-1.11.2 minitest-5.4.3 power_assert-0.2.2 rdoc-4.2.0 test-unit-3.0.8

mini_portile2-2.0.0 nokogiri-1.6.7.1 rake-10.4.2 rubygems-update-2.5.1

</pre>

 

はい。nokogiriありましたー。

 

比較対象として、rbenv使ってインストールし、新しくgemをインストールしていないバージョンでも試してみた。

<pre>

$  ls /Users/user_name/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems

minitest-5.4.3 power_assert-0.2.2 rake-10.4.2 rdoc-4.2.0 test-unit-3.0.8

</pre>

 

はい。ありません。

 

もちろん、gem list でも確認できます。

nokogiriをインストールした2.2.3を選択した状態。

<pre>

$ gem list

 

*** LOCAL GEMS ***

 

bigdecimal (1.2.6)

bundler (1.11.2)

io-console (0.4.3)

json (1.8.1)

mini_portile2 (2.0.0)

minitest (5.4.3)

nokogiri (1.6.7.1)

power_assert (0.2.2)

psych (2.0.8)

rake (10.4.2)

rdoc (4.2.0)

rubygems-update (2.5.1)

test-unit (3.0.8)

</pre>

 

インストールしていない2.2.4では

<pre>

$ gem list

 

*** LOCAL GEMS ***

 

bigdecimal (1.2.6)

bundler (1.11.2)

io-console (0.4.3)

json (1.8.1)

mini_portile2 (2.0.0)

minitest (5.4.3)

nokogiri (1.6.7.1)

power_assert (0.2.2)

psych (2.0.8)

rake (10.4.2)

rdoc (4.2.0)

rubygems-update (2.5.1)

test-unit (3.0.8)

</pre>

 

参考ページ

 

rbenv日本語リファレンス | Ruby STUDIO

http://komaken.me/blog/2013/07/05/頭が弱すぎてruby-rbenv-gem-bundle-railsの仕組みが理解できない・/

 

*1:Ruby on Rails使う時には、プロジェクトごとに必要なgemを指定してbundle install するケースが多い

*2:rbenvを使用してruby2.2.3を選択しているケース

*3:ここでは macbook air に最初から入っていたruby 2.0.0p645。$ rbenv global system などで選択可能。