rbenv | global と local と .ruby-version の微妙な関係

  • 5
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

$ rbenv global x.x.x

システム全体で使う ruby のバージョンを指定する。
だが実は、 ~/.rbenv/version ファイルを書き出すだけのコマンド。

$ rbenv global 2.2.0 # => ~/.rbenv/version に 2.2.0 と書き出される

なので他の方法で ~/.rbenv/version を作ったり、削除したりしても。ruby バージョンが変わる。

$ rbenv local x.x.x

プロジェクトごとに使う ruby のバージョンを指定する。
だが実は、カレントディレクトリに .ruby-version ファイルを書き出すだけのコマンド。

$ rbenv global 2.3.0 # => ./.ruby-version に 2.3.0 と書き出される

なので他の方法で .ruby-version を作ったり、削除したりしても。ruby バージョンが変わる。

rbenv の挙動

先に述べたとおり、rbenv global / rbenv local はファイルを作るだけだ。
実際には rbenv の挙動が ruby のバージョンを決めている。

順序

rbenv は、まずカレントディレクトリの .ruby-version を見る。あればそれを使う。

もし無ければ、ひとつ上のディレクトリの .ruby-version を見る。あればそれを使う。
これをホームディレクトリ ~/ にたどりつくまで繰り返す。

ホームディレクトリまで辿っても .ruby-version がなければ、 ~/rbenv/version を見る。あればそれを使う。

つまり、ホームディレクトリに .ruby-version を作ってしまうと、global はどこからも参照されなくなる。

環境

  • rbenv 0.4.0
  • Mac OS X Yosemite