IntellJ IDEA(RubyMine) + Rails 4.1 + Rspec (spring)で cannot load such file -- teamcity/spec/runner/formatter/teamcity/formatter (LoadError)
環境
※僕はWindows8.1 + IntelliJ IDEA + リモートインタプリタ(Vagrant + VMwareWorkstation)環境ですが多分他でも同じ
問題
Rails 4.1 でIDEAからrspecを実行しようとするとエラーが発生する。
cannot load such file -- teamcity/spec/runner/formatter/teamcity/formatter (LoadError)
原因
springからrspecを実行する際、IntelliJ IDEA用のフォーマッタがロードパス上に見つからないこと
対策
binstubの利用+ロードパス追加
僕の方法
1.binstubの作成
bundle binstubs rspec-core
RAILS_ROOT/bin/rspec
が生成される
2.bin/rspec
でフォーマッタのロードパス追加
IDEA上でRSpecを実行すると、環境変数RUBYMINE_TESTUNIT_REPORTER
が設定されていたのでそれを利用。
#!/usr/bin/env ruby begin load File.expand_path("../spring", __FILE__) rescue LoadError end require 'bundler/setup' # 追加ここから # RubyMine / IntelliJ IDES Support if ENV['RUBYMINE_TESTUNIT_REPORTER'] # RUBYMINE_TESTUNIT_REPORTER = '/home/vagrant/.rubymine_helpers/rb/testing/patch/testunit' rubymine_formatters = [ File.expand_path('../common/teamcity', ENV['RUBYMINE_TESTUNIT_REPORTER']), File.expand_path('../bdd/teamcity', ENV['RUBYMINE_TESTUNIT_REPORTER']) ] rubymine_formatters.each do |f| $:.unshift File.dirname(f) if File.exists?(f) end end # /追加ここまで load Gem.bin_path('rspec-core', 'rspec')
これで
bin/spring stop
でspringサーバを一度停止してから、specを実行。(実行時に自動起動されます)