EmacsでRubyOnRailsの開発をしている方には、Rinariを使っている方が多いと思います。RinariはEmacsのマイナーモードで、Rails開発に便利な機能を多数提供しています。
Rinariをご存知の無い方は以下の記事を一読してインストールをお薦めします。
Rinaiには、Emacsのバッファ内でテストやウェブサーバを立てるような機能があるのですが、このとき利用すRubyコマンドがRVM(RubyVersionManager)と連携していないため、別のバージョンのRubyコマンドが起動してしまいとても不便でした。ずっとターミナルで我慢していたのですが、先日たまたまRVMをEmacs上から制御するrvm.el
なるものを見つけてたので、これを利用してRinari上で動くRubyコマンドをRVMで切り替えられるように設定しました。
rvm.elのインストール
rvm.el
は以下のURLからダウンロードしてload-path
が通った適当なところにおいてください。
.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コマンドがプロジェクト毎に正しく選択され快適に利用することができます。是非お試しください。