1. ホーム
  2. ruby

[解決済み] rbenvがrubyのバージョンを変更しない

2022-03-17 07:07:58

質問

githubの案内に従ってrbenvをインストールしました。私はOSXを使用していますが、Ubuntu 12.04 VMで試したところ、同じ結果が得られました。ターミナルでrubyのバージョンを変更しようとすると、次のようなメッセージが表示されます。

rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125

rbenv global
1.9.3-p0

rbenv rehash

ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]

which ruby
/usr/bin/ruby

なぜrbenvはrubyのバージョンを思ったように切り替えられないのか、どなたかお分かりになりますか?また、ローカルディレクトリには、rubyのバージョンが1.8.7になる原因となる.rbenvファイルはありません。

rbenv local
rbenv: no local version configured for this directory

解決方法は?

PATHに $HOME/.rbenv/shims$HOME/.rbenv/bin

$ env | grep PATH

また、bashを使用している場合は~/.bash_profileに、zshを使用している場合は~/.zshenvに、以下の内容が記述されていることを確認します。

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

注意 この設定は、~/.bash_profile の最後の設定であることを確認してください。私は、プログラムをインストールすると、.bash_profileが更新され、PATHがリセットされる問題に遭遇しました。

最後に $HOME フォルダーに .ruby-version をした場合、誤って作成してしまう可能性があるファイルです。 $ rbenv local <ruby-version> の中で $HOME フォルダーに格納されます。すること $ rbenv global <ruby-version> を変更します。 $HOME/.rbenv/version ファイルが存在し .ruby-version ファイルを $HOME フォルダで設定されたバージョンが上書きされます。 $HOME/.rbenv/version .

docsより。

Rubyバージョンの選択 shimを実行するとき、rbenvは以下のソースから順に読み込んで、どのRubyバージョンを使用するかを決定します。

<ブロッククオート

RBENV_VERSION環境変数(指定されている場合)。rbenvシェルコマンドを使用すると、現在のシェルセッションでこの環境変数を設定することができます。

<ブロッククオート

実行中のスクリプトのディレクトリとその親ディレクトリをファイルシステムのルートに達するまで検索し、最初に見つかった .ruby-version ファイルです。

<ブロッククオート

現在の作業ディレクトリとその親ディレクトリをファイルシステムのルートまで検索して、最初に見つかった .ruby-version ファイルです。現在の作業ディレクトリにある .ruby-version ファイルは、rbenv local コマンドで変更することができます。

<ブロッククオート

グローバルな ~/.rbenv/version ファイル。このファイルは、rbenv globalコマンドを使用して変更することができます。グローバルなバージョンファイルが存在しない場合、rbenv は "system" Ruby を使いたい、つまり rbenv がパスにない場合に実行されるバージョンを使いたいのだと仮定します。