Rails で mountable なのを作ってる時、test/dummy 以下の FactoryGirl が二重に呼び出されてしまいアレだった。
ネット上で見つけたコードを馬鹿正直にコピペしていたら死んだし俺が悪かったという話です。
いつもの感じで
rails plugin new new_plugin --mountable
cd new_plugin
rails g rspec:install
したままではプラグイン用に生成される factories にパスが通ってないので以下のような感じで rails_helper.rb に加えましょうという記述がありました。
require 'factory_girl_rails' FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories') FactoryGirl.find_definitions
これ確かに直下の factories にパスが通ってめでたいのですが、すでに通っている test/dummy/spec/factories
に factory があった場合、FactoryGirl.find_definitions
であらためて読み込まれてしまい死にます。かといってこれをはずすと肝心の直下の factories が反映されないのですが、テストごとに FactoryGirl がちゃんと更新されるように
RSpec.configure do |config| # 略 config.before(:all) do FactoryGirl.reload end end
このようなコードがいれてあると実行前に全部読まれるので大丈夫です。
なので、マウンタブルに rspec + FactoryGirl したいときは
require 'factory_girl_rails' FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
だけで ok っぽい、よかったですねというポカミスのお話でした。