我们更新了工厂女孩后,我的脚手架发电机停止工作。这是为什么发生。首先,我的配置文件,试图为某些默认脚手架一代,像这样:Rails 3.1:我如何添加一个在gem初始值设定项后运行的初始化程序?
class Application < Rails::Application
config.app_generators do |g|
g.template_engine 'mizugumo:haml'
g.scaffold_controller 'mizugumo:scaffold_controller'
g.assets 'mizugumo:js_assets'
g.test_framework :lrdspec, :fixture => true
g.fixture_replacement 'lrdspec:factory'
g.fallbacks['mizugumo:haml'] = :haml
g.fallbacks[:lrdspec] = :rspec
end
...
end
其中:lrdspec是我公司的脚手架规格发电机的名称。然而,最近的factory_girl_rails在其初始化,粗暴力量config.generators.test_framework为“test_unit”除非你的测试框架是完全“:rspec的”:
module FactoryGirl
class Railtie < Rails::Railtie
initializer "factory_girl.set_fixture_replacement" do
generators = config.respond_to?(:app_generators) ? config.app_generators : config.generators
if generators.options[:rails][:test_framework] == :rspec
generators.fixture_replacement :factory_girl, :dir => 'spec/factories'
else
generators.test_framework :test_unit, :fixture => false, :fixture_replacement => :factory_girl
end
end
我试图找出如何要做的是在FG的初始化器后面生成我自己的初始化器,将test_framework设置回:lrdspec,就像我想要的那样。
我试过把我自己的railtie放到config/initializers中,或者在config/application.rb中添加一个块到config.after_initialize,以及其他一些方法,但还没有找到解决方案。 (我对Rails'初始化序列的了解需要比'我认为的更深一些')。
谢谢!
你看http://guides.rubyonrails.org/initialization。 html(或Rails 2的http://railsguts.com/initialization.html)? – coreyward
是的..(和railties-3.1.1/lib/rails/initializable.rb的代码是我过去几个小时一直在阅读的内容,它们很有帮助,但我看不到看看如何影响创建的初始化器的* order * – IdahoEv
初始化器(例如config/initializers/foobar.rb)是按照“按字母顺序排列”的顺序加载的,应该很容易找到执行实际的文件grepping,不是? – coreyward