rbenv利用時にruby -vで古いバージョンのRubyが呼ばれる場合の対処

スポンサーリンク

以下の記事に質問のコメントを頂いたのですが、rbenv global コマンドで最新の ruby を利用するように設定したにも関わらず、ruby -v コマンドでバージョンを確認すると旧バージョンの ruby が呼ばれる場合の対処法です。

Rails と Ruby のアップデート作業手順 | EasyRamble

同じような状況にはまったことが過去にありました^^;

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

ruby -vのRubyがrbenv globalで指定したバージョンと異なる状況

状況としては、以下のような現象を想定。

rbenv global でバージョン 2.2.2 の新しいrubyを使うように指定したのに、ruby -v コマンドでバージョンを確認すると古い ruby になってしまう状況。

このミス、私も以前ひっかっかたことがありまして、十中八九おそらく環境変数(PATH)の設定ミスが原因です。以下のコマンドで、ruby がどのパスから呼ばれているか確認できる。

などと表示されたら、rbenv で入れた ruby ではなくて、システムのデフォルトの Ruby が使われています。rbenv の ruby が呼ばれている場合は、出力は以下のようになります。(Mac OS Xの場合)

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 を設定する。

rbenv と ruby-build で Ruby をインストールして管理 〜 CentOS6 | EasyRamble

ユーザーディレクトリに rbenv をインストール時
~/.bashrc, ~/.zshrc などに PATH を設定する。

レンタルサーバーに rbenv + ruby-build + ruby 2.0 環境を作った | EasyRamble

Mac OS X で Homebrew の場合
Mac OS X の Homebrew で rbenv, ruby-build をインストールした場合は、~/.bashrc, ~/.zshrc などに eval “$(rbenv init -)” を追加するだけで良い。

Mac の Ruby 管理を rvm から rbenv に乗り換え | EasyRamble
rbenv installation: Homebrew on Mac OS X

Windows では検証したことがありません、すいません。

いずれの環境にしろ、最後に設定を読み込み直して、環境変数(PATH)を確認します。

rbenv 版の ruby のディレクトリのパスが先頭に来ていればOKです。~/.bashrc などの書き方で、rbenv 用の PATH 設定を書いた部分より後ろで、さらに PATH を上書きしたりなどのミスに注意する必要があります。

スポンサーリンク
私は以下の本で Ruby を覚えました。メタプログラミングRubyは入門を超える内容で難しめです。
 
スポンサーリンク
  • 2件のコメント
  • hidep888

    こんにちは。Rubyバージョンアップで検索してしていたら、こちらに辿り着きました。
    vi ~/.bashrcで、編集出来ましたが、閉じ方がわかりません。どの様なコマンドですれば良いでしょうか??
    突然ですが申し訳ありません。
    何とぞ宜しくお願い申し上げます。m(_ _)m

    • taka

      :wq で上書きして保存できますよ。:w が上書き、:q が終了です。

Leave Your Message!