rbenvなrubyから別のrubyを実行する

正確に言うと.ruby-versionがあるプロジェクトAの中で起動したRubyから、内容の異なる.ruby-versionを持つ別のプロジェクトBに移動してRubyスクリプトを実行するときの話。プロェジクトBの.ruby-versionに従ってほしいのだがそうはならなかったというのでforemanを使っていてちょっとはまったので軽く追いこんでみた。

こう、かなあ?

$ ruby -ve 'Dir.chdir("/other/project") { system %{unset RBENV_VERSION RBENV_DIR; $SHELL -c "ruby -v"} }
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin18]

たぶんシェルの設定にもよる。

特定のRubyを使えばよいというだけならインタプリタをフルパスで指定するか、PATHの先頭にあらかじめパスを追加しておくほうがシンプルかも。