コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

rbenvでのバージョンを決めるのは環境変数RBENV_VERSIONが最優先、次点が.ruby-version

表題の通り。ドキュメントにわかりやすく記載がないので、各記述をよりあつめた話をドキュメントをもとにまとめる。

調査したバージョン

$ rbenv -v
rbenv 1.2.0-59-g0704e65

rbenvが利用するRubyのバージョンを決めるのはどの情報をもって決めるのか

まずはrbenvのバージョンを決定づける要素は以下

対応方法 説明 設定データのありどころ
rbenv global * rbenvが利用するデフォルトとして設定する (ドキュメント) ~/.rbenv/version (anyenvなど使うと場所が変わります
rbenv local * コマンドを実行したディレクトリ配下を指定舌バージョンで動くようにする(ドキュメント) ./.ruby-version
環境変数RBENV_VERSION RBENV_VERSION=*環境変数として設定する。なおrbenv shell *で設定したときはこの環境変数の機構を利用している。 各種環境変数

優先順位はどれか

順番に関しての記述はrbenvのドキュメントに記載があり

Sets the global version of Ruby to be used in all shells by writing the version name to the ~/.rbenv/version file. This version can be overridden by an application-specific .ruby-version file, or by setting the RBENV_VERSION environment variable.

とあり、globalで設定舌内容は .ruby-versionRBENV_VERSION で上書き可能ということが書かれている。

また、下記のようにも書かれている。

Sets a shell-specific Ruby version by setting the RBENV_VERSION environment variable in your shell. This version overrides application-specific versions and the global version.

RBENV_VERSION で指定したものはアプリケーション固有のバージョンや、globalのバージョンを上書きする」という旨の記述が書かれている。

これらのことをまとめると

  1. 環境変数RBENV_VERSION
  2. .ruby-version
  3. ~/.rbenv/versionrbenv global * で設定した値)

という優先順位で動作するということになる。

関連リンク