[小ネタ][裏技]RubyMineでJRubyの開発、実行をする
はじめに
予め作成してあるJRubyのプロジェクトをRubyMineで読み込み実行したところ、ローカルにインストールしてあるgemを認識しないという事象に遭遇して小一時間ほど悩みました。裏技的方法で解決したので備忘録として載せておきます。
実行したJRuby、RubyMineのバージョンは以下になります。
- jruby 9.0.0.0
- RubyMine 7.1.4
事象と解決方法
事象について
gemを認識しない原因としては、RubyMineのプロジェクトがCRubyのSDKを参照していたためと思われます。RubyMineのプロジェクトでは「External Libraries」で参照しているSDKを見ることが出来ます。
プロジェクトの読み込み時にSDKとしてJRubyを指定したのですが、こうなってました・・・。(キャプチャは別のプロジェクトから取ってますが)
解決方法
プロジェクトの読み込み時にJRubyを指定しても上記のようになるため、プロジェクトを新規に作成し、ソースを既存プロジェクトから移植するという方法を取りました。以下がプロジェクトを新規に作成するダイアログで、JRubyのSDKを指定するキャプチャになります。
作成したプロジェクトの「External Libraries」を見ると、参照するSDKがJRubyとなっています。
(余談)ローカルにgemをインストールした場合
余談ですがgemのインストールをプロジェクトローカルに行っている場合(「$ bundle install --path vendor/bundle」のように)、RubyMineの実行時に「$ bundle exec」が付くようにします。メニューバーの「Run」 - 「Edit Configurations」を開き、「Bundler」タブにて「Run the script in the context of bundle(bundle exec)」のチェックを入れます。
まとめ
既存のプロジェクトの実行なのに、新規プロジェクトをRubyMineで作成して実行するという、ちょっとモヤモヤする解決法でした。以前はプロジェクトの読み込み時にJRubyを指定してもOKだった気もしますが・・・。スマートな解決方法など分かれば、また記事としてアップ致します。同じ事象に遭遇している方の参考になれば幸いです。