私の環境固有かもしれないのですが、RubyMine で RSpec を使おうとすると、こんなエラーが出ることがあります。
..../gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `require': cannot load such file -- teamcity/spec/runner/formatter/teamcity/formatter (LoadError)
これは、一部の Gem が、RubyMine のアプリケーションパッケージファイル(RubyMine.appの中)にあって、それを見付けられていないせいです。
実行時に Gem の検索パス ( $:
) がそこを通っていれば良いのですが、rspec 実行する時に -I
オプションで与えるようにするなどしても、どうも、うまくいきません。
しかたないので、以下の方法で対処しています。
環境変数の設定
環境変数 MY_RUBYMINE_HOME
が RubyMineの app パッケージファイルを指すように設定します。OS X の環境で設定してもよいし、それが嫌ならRubyMineの中で、ツールの実行環境毎に設定できるので、それを用います。
メニューの Run → Edit Configuration から、設定を呼び出します。
RSpecのデフォルト設定、あるいは、既に作られているRSpecの実行環境を選び、
環境変数の追加設定ができるので、MY_RUBYMINE_HOME
に /Applications/RubyMine.app
と設定します。
以前はRUBYMINE_HOME
という環境変数がセットされていたはずで、これを用いれば良かったと思うのですが、6.x では、どうもそうではなさそうなので、こうします。
rspec binstub の変更
Rails のプロジェクトルートディレクトリの bin
ディレクトリの下、bin/rspec
の頭に、以下のように追加します
#!/usr/bin/env ruby
if ENV["MY_RUBYMINE_HOME"]
$:.unshift(File.expand_path("rb/testing/patch/common", ENV["MY_RUBYMINE_HOME"]))
$:.unshift(File.expand_path("rb/testing/patch/bdd", ENV["MY_RUBYMINE_HOME"]))
end
これで、Rubymineの中からエラー起こさずに実行できるはずです。