我們更新了工廠女孩後,我的腳手架發電機停止工作。這是爲什麼發生。首先,我的配置文件,試圖爲某些默認腳手架一代,像這樣: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