はじめに
みなさんこんにちは。
rbenvでバージョンを変更した後tmuxを使うと、バージョンが変更されてない(デフォルト状態?)現象が起こったので紹介します。
現象
bashでrbenvのバージョンを確認(ruby -v
)すると以下のようになった。
※思い出しながらの投稿なので表示されているコードと実際のコードには若干間違いがあるかもしれないです
MacBook-Air:~ user $ ruby -v
ruby 2.0.0p247
tmuxの環境下で同じコマンドを打つと以下のようになる。
MacBook-Air:~ user $ ruby -v
ruby 1.8.7
rbenvでバージョン指定しているはずなのに、tmuxでは有効になっていませんでした。
更に、もとからrailsはインストール済みだったのでバージョンを確認すると、tmuxを利用しない場合は問題ないがtmux利用時はrailsコマンドがcommand not found
となり効かなくなる。
railsが消えた...。
原因
rbenv versions
をすると以下のようになっていた。
MacBook-Air:~ user $ rbenv versions
system
1.9.3-p327
* 2.0.0-p247 (set by RBENV_VERSION environment variable)
指定したバージョンの後ろに(set by RBENV_VERSION environment variable)
となっているのがポイント。
環境変数RBENV_VERSIONが設定されてしまっているのが問題のようです。
参考URL:http://rikei-webmemo.hateblo.jp/entry/2014/01/29/134019
試しにtmuxを利用していない状態で環境変数RBENV_VERSIONを確認してみました。
MacBook-Air:~ user $ echo $RBENV_VERSION
ruby 2.0.0-p247
tmux利用時は以下のようでした。
MacBook-Air:~ user $ echo $RBENV_VERSION
参照出来てないってことなんですかね。
解決
以下のサイトを参考にさせて頂きました。ありがとうございます。
tmux+rbenvの環境で指定したRubyが使われない件
http://d.hatena.ne.jp/akishin999/20130627/1372284674
.bash_profileに以下のコードを、
export PATH=$HOME/.rbenv/shims:$PATH
.tmux_confに以下のコードを入力。
set-environment -gu RBENV_VERSION
これでもう一度バージョンを確認してみると
MacBook-Air:~ user $ rbenv versions
system
1.9.3-p327
* 2.0.0-p247 (set by /Users/user/.rbenv/version)
指定バージョンの後ろが(set by /Users/user/.rbenv/version)
となっていて変更されているのがわかりますね。
これでtmux利用時も指定したバージョンを利用することができるようになりました。
また、railsコマンドがcommand not found
になっていた件も同時に解決しました。
おわりに
今回の記事は現象発生時にリアルタイムで更新出来なかったため、コードなどの表記は若干違う可能性もあります。
あと、環境変数とかいろいろいぢくってて途中わけわからなくなった作業もあったので、これ以外に無意識になんかやったかもしれないです…。
まぁご参考程度によろしくお願いします。