RinariのRubyコマンドをRVMで切り替える

EmacsでRubyOnRailsの開発をしている方には、Rinariを使っている方が多いと思います。RinariはEmacsのマイナーモードで、Rails開発に便利な機能を多数提供しています。

Rinariをご存知の無い方は以下の記事を一読してインストールをお薦めします。

emacsとRinariで快適Rails開発!

Rinaiには、Emacsのバッファ内でテストやウェブサーバを立てるような機能があるのですが、このとき利用すRubyコマンドがRVM(RubyVersionManager)と連携していないため、別のバージョンのRubyコマンドが起動してしまいとても不便でした。ずっとターミナルで我慢していたのですが、先日たまたまRVMをEmacs上から制御するrvm.elなるものを見つけてたので、これを利用してRinari上で動くRubyコマンドをRVMで切り替えられるように設定しました。

rvm.elのインストール

rvm.elは以下のURLからダウンロードしてload-pathが通った適当なところにおいてください。

http://www.emacswiki.org/emacs/RvmEl

.emacsに以下を加えれば完了です。

(require 'rvm)
(rvm-use-default)

Rinari内で切り替え

ただしこの設定は、RVMのdefaut設定したRubyコマンドを利用する設定なので、プロジェクト毎に.rvmrc等で切り替える為には以下の様なadviceを設定します。

(defadvice ruby-compilation-do (before set-ruby-by-rvm (name cmdlist))
  "set ruby by rvm"
  (rvm-activate-corresponding-ruby))
(ad-activate 'ruby-compilation-do)

この、rvm-activate-corresponding-rubyというのがミソでこれをRinariが提供するRubyコマンドの実行メソッドruby-compilation-doの前にMix-inします。rvm.elおよびRinariの設定をまとめて書くと以下のようになりました。

たったこれだけで、Rinari上でのRubyコマンドがプロジェクト毎に正しく選択され快適に利用することができます。是非お試しください。

コメント / トラックバックはありません

コメントする