【发布时间】:2011-10-17 02:43:29
【问题描述】:
更新工厂女孩后,我的脚手架生成器停止工作。这就是发生的原因。首先,我的配置文件尝试为脚手架生成设置某些默认值,如下所示:
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 初始化序列的了解需要比我认为的更深入一些)。
谢谢!
【问题讨论】:
-
是的 .. 那(以及 railties-3.1.1/lib/rails/initializable.rb 的代码是我过去几个小时一直在阅读的内容。它们很有帮助,但是我看不到(来自任一来源)如何影响创建的初始化程序的 order。
-
初始化程序(例如 config/initializers/foobar.rb)按“字母”顺序加载。应该很容易找到对文件进行实际 grepping 的代码行,不是吗?
标签: ruby-on-rails ruby-on-rails-3 factory-bot