[小ネタ][裏技]RubyMineでJRubyの開発、実行をする

2015.11.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

予め作成してあるJRubyのプロジェクトをRubyMineで読み込み実行したところ、ローカルにインストールしてあるgemを認識しないという事象に遭遇して小一時間ほど悩みました。裏技的方法で解決したので備忘録として載せておきます。

実行したJRuby、RubyMineのバージョンは以下になります。

  • jruby 9.0.0.0
  • RubyMine 7.1.4

事象と解決方法

事象について

gemを認識しない原因としては、RubyMineのプロジェクトがCRubyのSDKを参照していたためと思われます。RubyMineのプロジェクトでは「External Libraries」で参照しているSDKを見ることが出来ます。 rubymine_jruby_develop_cruby
プロジェクトの読み込み時にSDKとしてJRubyを指定したのですが、こうなってました・・・。(キャプチャは別のプロジェクトから取ってますが)

解決方法

プロジェクトの読み込み時にJRubyを指定しても上記のようになるため、プロジェクトを新規に作成し、ソースを既存プロジェクトから移植するという方法を取りました。以下がプロジェクトを新規に作成するダイアログで、JRubyのSDKを指定するキャプチャになります。 rubymine_jruby_develop_jruby
作成したプロジェクトの「External Libraries」を見ると、参照するSDKがJRubyとなっています。 rubymine_jruby_develop_jruby_proj

(余談)ローカルに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_develop_run_config

まとめ

既存のプロジェクトの実行なのに、新規プロジェクトをRubyMineで作成して実行するという、ちょっとモヤモヤする解決法でした。以前はプロジェクトの読み込み時にJRubyを指定してもOKだった気もしますが・・・。スマートな解決方法など分かれば、また記事としてアップ致します。同じ事象に遭遇している方の参考になれば幸いです。