akishin999の日記

調べた事などを書いて行きます。

tmux + rbenv の環境で指定した Ruby が使われない件

以前、tmux + rbenv の環境で、指定したバージョンの Ruby が何故か使われなくなってしまった件がありました。

tmux + tmuxinator + rbenv の環境で RBENV_VERSION が勝手に設定されてしまう件
http://d.hatena.ne.jp/akishin999/20130303/1362308566

この時は上に書いた通り、tmux 起動時に RBENV_VERSION が設定されないようにした事で回避できたと思っていました。

が、開発環境で久しぶりに別のバージョンの Ruby に切り替えてみたところ、またもや global な Ruby しか使われない問題が発生している事が発覚。

調べてみるとどうやら下記の事象のようです。

tmuxとrbenvを併用する場合は.rbenv/shimsのパスも通してないとバージョン指定できない - 僕の車輪の再発明
http://kazuph.hateblo.jp/entry/2013/05/06/200059

The master branch of rbenv breaks inside of tmux. Issue #369 sstephenson/rbenv
https://github.com/sstephenson/rbenv/issues/369

環境変数 PATH を確認してみると、「$HOME/.rbenv/shims」より前に global な Ruby のパスが設定されてしまっています。
どうやらこれが原因で上手く切り替わってくれないようです。

公式ドキュメントの方にも以下のように書いてありました。

rbenv works by inserting a directory of shims at the front of your PATH:

https://github.com/sstephenson/rbenv#understanding-shims

試しに以下のように export してみると、その後はちゃんと指定した Ruby に切り替わるようになりました。

% export PATH=$HOME/.rbenv/shims:$PATH

というわけで、自分の環境では tmuxinator を使っていたので、tmuxinator 用の YAML ファイルで以下のよう設定してみました。

project_name: devel
project_root: ~/
pre:_
  - export PATH=$HOME/.rbenv/shims:$PATH
・
・
・

一旦 tmux を終了し、その後 mux コマンドで tmux を起動すれば OK です。
今度こそ、tmux + rbenv が問題なく使えるようになったはず・・・。