web-dev-qa-db-ja.com

rbenvがRubyのバージョンを変更しない

私は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バージョンをそれがそうであると思っているように切り替えていない理由について誰かが何か考えがありますか?また、ローカルディレクトリに.rbenvファイルがないため、Rubyのバージョンがデフォルトの1.8.7になります。

rbenv local
rbenv: no local version configured for this directory
220
ajorgensen

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をリセットするプログラムをインストールするという問題に遭遇しました。

425
defvol

これは古い質問かもしれませんが、Googleがここに私を導き、後世紀のために、私は共有すると思いました。

私の問題は上記の推奨される解決策の多くの後も続いた。 OPのように、私はrbenvをインストールしてからRubyバージョンをインストールしましたが、私のラップトップはデフォルトでシステムになっていました。私が見落としていたのは、私が走ったときだということです。

[~/.rbenv] $ rbenv versions
* system (set by /Users/alphadogg/.rbenv/version)
  2.0.0-p247

そう、それはまだシステムにとってデフォルトでした。クイック

[~/.rbenv] $ rbenv local 2.0.0-p247

新しいバージョンに切り替えました。

86
alphadogg

私は〜/ .bash_profileに以下を追加することでこれを修正しました:

#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"

これは https://github.com/sstephenson/rbenv に記載されているものです。

私が言えることから、@ rodowiの投稿で言及されている〜/ .rbenv/binディレクトリはありません。

80
mjmdavis

最初のステップは、どのRubyが呼び出されているのかを調べることです。
which Ruby

あなたのシステムは言う:
/usr/bin/Ruby

これはrbenvが使っているシムではありません。(MacOSでは)次のようになります。
/Users/<username>/.rbenv/shims/Ruby

シムは実際にはあなたが設定したRubyのバージョンへのリダイレクトのように振る舞うスクリプトです。

rbenv global 1.9.3 rbenv local --unset rbenv Shell --unset
トラブルシューティングのために、プロジェクト固有の "ローカル"バージョンとシェル固有の "シェル"バージョンの設定を解除し、〜/のプレーンテキストファイルで決定される "グローバル"バージョン設定を使用してテストすることをお勧めします。あなたのケースではちょうどバージョン番号 "1.9.3"になるでしょう.rbenv/verion。プロジェクトフォルダ(ホームフォルダではない)のルートで "ls -laG"を実行して、 "。Rubyバージョン"ファイルが存在しないことを確認できます。

「rbenvのバージョン」を使用して、どのバージョンのrbenvを使用するように設定されているか(およびそれを設定しているファイルの場所と名前)を識別できます。

rbenv versions

問題のないもの:パスを正しく設定するまで。

あなたの* MacOSがあなたに従うことを確認するためにこれを使ってください:
eval "$(rbenv init -)"

に続く:
which Ruby

/Users//.rbenv/shims/Rubyのように見えるようにします。

その後、新しい端末ウィンドウを開くたびに実行されるように、プロファイルにその行を追加します。
~/.bash_profile eval "$(rbenv init -)"

パスを変更する他の方法があります、rbenv initを実行する代わりにそれらのうちのどれでも代用して自由に感じる。

注:Railsを再インストールします。
gem install Rails

もしあなたがRuby on Railsを実行しようとしているのなら、最初にこれらすべてを動かす必要があり、それからRails gemを再びインストールする必要があります。以前のRailsのインストールでは、間違ったRubyへのハードコーディングされたパスを使用しますが、他のいくつかのものは間違った場所にあるため、gemをもう一度インストールします。

P. S.あなたのMacOSがあなたに従わない場合(*上記)、あなたはあなたのパスを変更するための別の方法を見つける必要があるかもしれませんが、それは問題になることはほとんどないでしょう。

26
Sky Notify

私はちょうどこれと同じ問題を見つけました。私がしたのはrbenvを(自作経由で)アンインストールしてから再インストールすることでした。私も追加しました

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

rbenvを再インストールしたときに〜/ .bash_profileに入りました。今完全に動作します。

21
Neal

私の場合は~/.zshenvの変更はうまくいきませんでした。私は~/.zshrc内で変更を加えなければなりませんでした。

私はちょうど加えました:

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

~/.zshrcの先頭で、シェルを再起動してログアウトしました。

うまくいったかどうか確認してください。

➜  ~ rbenv install 2.4.0
➜  ~ rbenv global 2.4.0
➜  ~ rbenv global
2.4.0
➜  ~ Ruby -v
Ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
10
Peter Piper

このコマンドを実行

端末を開くたびにロードされるように、bashにrbenvを追加します。

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

これであなたの問題は解決します 参照

6
Singhak

私は同じ問題を抱えていましたが、Homebrewによって引き起こされました:

[~]$ rbenv version
2.3.0 (set by /Users/user/.rbenv/version)
[~]$ Ruby -v
Ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
[~]$ which Ruby
/usr/local/bin/Ruby

どういうわけか私もHomebrew経由でRubyをインストールしました、そしてHomebrewパスは私の$PATHでrbenvパスより進んでいました。 brew uninstall Rubyを実行すると、それは私のために修正されました。

4
djb

rbenv help Shell

「シェルで 'RBENV_VERSION'環境変数を設定してシェル固有のRubyバージョンを設定します。このバージョンはロケール固有のバージョンとグローバルバージョンをオーバーライドします。rbenvに知られているRubyバージョンと一致する文字列でなければなりません。利用可能なRubyのバージョンの一覧については、「デフォルトのシステムRubyを使用してください。rbenvのバージョンを実行してください。」

Rbenvが正しくインストールされていれば、Ruby -vは以下に対応します。

rbenv Shell 1.9.3-p125

4
htmldrum

私は同じ問題に遭遇しました。 "Sudo"を付けて "rbenv global"コマンドを実行することでこれを修正しました。それはなんらかの許可の問題だと思います。

更新:ついに解決策を見つけました。私のMac上には "/usr/local/Cellar/rbenv/0.3.0/"の下に同じファイル "version"がありました。それは時折誤って作成されたと思います。あなたはそれを取り除くべきです。

3
Vincent

私にとってrbenvzshと一緒に使う最も簡単な方法は.zshrc configのpluginsセクションにrbenvを追加することです。私の場合、それは以下のようになります。

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(Rails git textmate Ruby lighthouse)
# Add wisely, as too many plugins slow down Shell startup.
plugins=(git bower Rails Ruby rbenv gulp npm node nvm sublime)

それ以降はrbenvを使ってRubyのバージョンをインストール、切り替え、使用する際に問題はありません。

変更を加えた後は端末セッションを再起動してください。

3
Rootical V.

私がこれらの症状を抱えていたとき、問題は私が気付かずに私が切り替えようとしていた新しいRubyバージョンのために途中で失敗したことであることがわかった。修正はそれを削除して再インストールすることでした。

(これは、Ruby 1.9.3が利用可能なバージョンのrbenvリストに表示されていても、rbenvが想定していた場所に実行可能ファイルがないことを意味していました。あなたのパス、それが実際に置く場所に何もない場合、あなたのOSは喜んであなたのデフォルトのパスを探し続け、あなたのシステムのバージョンを探します。

3
David

これは私がrbenvを再インストールした直後に起こりました。どうやら私のホームディレクトリに.Ruby-versionファイルがあり、もう存在しないバージョンを指定しているようです。ファイルを削除したら、すべてうまくいきました。

2
John K. Chow

魚用シェルユーザー

set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/
2
Basil Mariano

.bash_profileの最後の行が次のようになっていることを確認してください。

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

実行します。

rbenv init

私がそれを実行した後、私が私のローカルrbenvバージョンを設定したとき:

rbenv local 2.4.0

それから私のRuby -vと私のrbenv localのバージョンは一致しました。

注:自分が入っているディレクトリを終了してから再びそこに戻ることもできます。私は物事をうまく動かすために必要だと気付きました。

1
AmitF

奇妙なことに、rbenvのバージョンは、.rbenvファイルを設定していません。

0
poseid

chruby を使ってみることができますか? chrubyはシムに頼らず、代わりにPATHGEM_HOMEGEM_PATHを修正するだけです。

0
postmodern

bashを使用している場合は、に進みます。

~/.bash_profile

そして次の行を追加します(まだそこにない場合)

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

Zshを使用している場合は、に進みます。

~/.zshrc

.zshrcファイルの末尾に、同じコード行を追加します。

それから端末を再起動してください。これで大丈夫です。

0
drjorgepolanco