表題の通り。ドキュメントにわかりやすく記載がないので、各記述をよりあつめた話をドキュメントをもとにまとめる。
調査したバージョン
$ 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-version
か RBENV_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のバージョンを上書きする」という旨の記述が書かれている。
これらのことをまとめると
- 環境変数
RBENV_VERSION
.ruby-version
~/.rbenv/version
(rbenv global *
で設定した値)
という優先順位で動作するということになる。
関連リンク
- rbenv で Ruby の version を一時的に切り替え | そんなこと覚えてない
- Intellij使用時、rbenvで読み込むバージョンが異なる問題 | つかびーの技術日記 - IntteliJは
RBENV_VERSION
に値を入れて強制的に書き換えるとのこと