1
0
Fork 0
mirror of https://github.com/thoughtbot/factory_bot_rails.git synced 2022-11-09 11:49:18 -05:00

Tweaked factory_girls_initialization process to allow other engines to advertise its factories for use in a recipient project

When a (mountable) engine defines models and factories to test the models, sometimes it is convenient to use this factories
from a project which depends on the engine.

But current factory_girl_rail initialization processes do not allow to do so without hacks.
(after_initializer resets all FactoryGirl.definition_file_paths to defaults with = [paths])

When this change introduces the engine can advertise some factories in an its own railtie, i.e.:

module ModelCore
  class Engine < Rails::Engine

    initializer "model_core.factories", :after => "factory_girl.set_factory_paths" do
      FactoryGirl.definition_file_paths << File.expand_path('../../../spec/factories', __FILE__) if defined?(FactoryGirl)
    end
  end
end
This commit is contained in:
Artem Ignatyev 2011-11-14 15:40:49 -06:00
parent 1e47af0319
commit 191ce5e47e

View file

@ -14,12 +14,15 @@ module FactoryGirl
end end
end end
config.after_initialize do initializer "factory_girl.set_factory_paths" do
FactoryGirl.definition_file_paths = [ FactoryGirl.definition_file_paths = [
File.join(Rails.root, 'factories'), File.join(Rails.root, 'factories'),
File.join(Rails.root, 'test', 'factories'), File.join(Rails.root, 'test', 'factories'),
File.join(Rails.root, 'spec', 'factories') File.join(Rails.root, 'spec', 'factories')
] ]
end
config.after_initialize do
FactoryGirl.find_definitions FactoryGirl.find_definitions
end end
end end