我正在尝试用使用rails3-generators的工厂来替换夹具生成:
https://github.com/indirect/rails3-generators#readme
该 gem 包含在我的 Gemfile 中并已安装:
# Gemfile
gem 'rails3-generators', :group => :development
我将以下内容添加到 application.rb:
# application.rb
config.generators do |g|
g.stylesheets false
g.fixture_replacement :factory_girl
end
然而“rails g model Insect”仍在生成固定装置(“insects.yml”)。这对使用 Rails 3.0.4 和rails3-generators 0.17.4 的其他人有效吗?
“rails g”显示可用的新生成器(例如 Authlogic 和 Koala),但“rails g model”仍然列出固定装置并且不引用工厂。
我还应该添加什么才能使其正常工作?谢谢。
编辑:我运行了 gem 的测试套件,其中包括对此的测试,并且它通过了。不知道为什么它不适用于我的应用程序。
Edit2:我再次尝试了一个测试项目,得到了相同的结果:固定装置而不是工厂。如果有人可以确认这是否适用于 Rails 3.0.4 和 Rails3-generators 0.17.4,那也会很有帮助,因为这意味着我的项目做错了。
Edit3:如果我运行“rails g model Insect -r plant_girl”,它就会起作用。我认为 application.rb 中的生成器配置应该解决这个问题,所以这似乎是问题的根源。
最佳答案
搜索周围我发现以下内容可能会有所帮助:
尝试为
factory_girl
的工厂指定目录选项:config.generators do |g| g.stylesheets false g.fixture_replacement :factory_girl, :dir => "spec/factories" # or test/factories, as the case may be end
如果您使用
Test::Unit
,请尝试以下操作:config.generators do |g| g.stylesheets false g.test_framework :test_unit, :fixture_replacement => :factory_girl end
在这两种情况下,您仍然需要 rails3-generators
gem,尽管有插入将该功能引入到 factory_girl_rails
中。
This Rails bug表明在某些时候,g.fixture_replacement
代码可能无法正常工作。也许 3.0.5 中的测试是合适的。 :)
关于ruby - 如何用使用rails3-generators的工厂替换固定装置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5091313/