- 更新日: 2015年4月15日
- Ruby
rbenv利用時にruby -vで古いバージョンのRubyが呼ばれる場合の対処
以下の記事に質問のコメントを頂いたのですが、rbenv global コマンドで最新の ruby を利用するように設定したにも関わらず、ruby -v コマンドでバージョンを確認すると旧バージョンの ruby が呼ばれる場合の対処法です。
Rails と Ruby のアップデート作業手順 | EasyRamble
同じような状況にはまったことが過去にありました^^;
ruby -vのRubyがrbenv globalで指定したバージョンと異なる状況
状況としては、以下のような現象を想定。
1 2 3 4 5 6 7 8 9 |
$ rbenv global 2.2.2 $ rbenv rehash $ rbenv versions system * 2.2.2 $ ruby -v ruby 1.8.7 |
rbenv global でバージョン 2.2.2 の新しいrubyを使うように指定したのに、ruby -v コマンドでバージョンを確認すると古い ruby になってしまう状況。
このミス、私も以前ひっかっかたことがありまして、十中八九おそらく環境変数(PATH)の設定ミスが原因です。以下のコマンドで、ruby がどのパスから呼ばれているか確認できる。
1 2 3 4 |
$ which ruby /usr/bin/ruby |
などと表示されたら、rbenv で入れた ruby ではなくて、システムのデフォルトの Ruby が使われています。rbenv の ruby が呼ばれている場合は、出力は以下のようになります。(Mac OS Xの場合)
1 2 3 4 |
$ which ruby /Users/ユーザー名/.rbenv/shims/ruby |
PATH を確認すると…
1 2 3 |
$ echo $PATH |
/usr/bin が /Users/ユーザー名/.rbenv/shims より前に来てたり、そもそも /Users/ユーザー名/.rbenv/shims が PATH に含まれてなかったりするはずです。
環境変数(PATH)を設定するコードを追加する
解決策としては、/Users/ユーザー名/.rbenv/shims/ruby の ruby が優先して呼ばれるようにすれば良いので、/Users/ユーザー名/.rbenv/shims/ のパスが環境変数(PATH)の先頭に来るように、~/.bashrc, ~/.zshrc などに設定します。
CentOS でシステムワイドに rbenv をインストール時
/etc/profile.d/rbenv.sh に rbenv 版の ruby の PATH を設定する。
1 2 3 4 5 6 |
$ sudo vi /etc/profile.d/rbenv.sh export RBENV_ROOT="/usr/local/rbenv" export PATH="$RBENV_ROOT/bin:$PATH" eval "$(rbenv init -)" |
rbenv と ruby-build で Ruby をインストールして管理 〜 CentOS6 | EasyRamble
ユーザーディレクトリに rbenv をインストール時
~/.bashrc, ~/.zshrc などに PATH を設定する。
1 2 3 4 5 6 |
$ vi ~/.bashrc export RBENV_ROOT=$HOME/local/rbenv export PATH=$RBENV_ROOT/bin:$HOME/local/bin:$PATH eval "$(rbenv init -)" |
レンタルサーバーに rbenv + ruby-build + ruby 2.0 環境を作った | EasyRamble
Mac OS X で Homebrew の場合
Mac OS X の Homebrew で rbenv, ruby-build をインストールした場合は、~/.bashrc, ~/.zshrc などに eval “$(rbenv init -)” を追加するだけで良い。
1 2 3 4 |
$ vi ~/.zshrc eval "$(rbenv init -)" |
Mac の Ruby 管理を rvm から rbenv に乗り換え | EasyRamble
rbenv installation: Homebrew on Mac OS X
Windows では検証したことがありません、すいません。
いずれの環境にしろ、最後に設定を読み込み直して、環境変数(PATH)を確認します。
1 2 3 4 |
$ source ~/.bashrc $ echo $PATH |
rbenv 版の ruby のディレクトリのパスが先頭に来ていればOKです。~/.bashrc などの書き方で、rbenv 用の PATH 設定を書いた部分より後ろで、さらに PATH を上書きしたりなどのミスに注意する必要があります。
- Ruby の関連記事
- Gemの作り方(Ruby Gem)
- ローカル開発中のgemをGemfileに書いてインストール
- 熊本地震の余震が夜に多いのは本当か?Rubyプログラムで検証してみた
- El Capitanでgemのnative extensionビルド失敗に対応
- Rubyで親クラスから子クラスの定数を参照
- MacabをRubyで使う
- rbenv/ruby-buildでRuby最新バージョンをインストール
- Rubyでクラスインスタンス変数にインスタンスメソッドからアクセス
- 距離1kmあたりの緯度・経度の度数を計算(日本・北緯35度)
- Google Maps Geocoding APIで住所から緯度・経度を取得するRubyコード
- 2件のコメント
こんにちは。Rubyバージョンアップで検索してしていたら、こちらに辿り着きました。
vi ~/.bashrcで、編集出来ましたが、閉じ方がわかりません。どの様なコマンドですれば良いでしょうか??
突然ですが申し訳ありません。
何とぞ宜しくお願い申し上げます。m(_ _)m
:wq で上書きして保存できますよ。:w が上書き、:q が終了です。