LoginSignup
73

posted at

updated at

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

$ 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

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

メンター受付

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
73