我正在使用factory_girl_rails
替代我的Rails项目中的灯具。我也在使用guard-rspec
来自动运行我的规范。 Guard没有接收我对工厂文件所做的更改(例如spec/factories/users.rb
) - 我必须停止警惕,然后重新初始化它以获取这些更改。
有哪些选项可以避免此手动过程?
答案 0 :(得分:4)
添加到您自己的答案:
我限制它运行的内容,因此它不会运行太多:
watch(%r{^spec/factories/(.+)\.rb$}) { "spec/models" }
或包括相关控制人:
watch(%r{^spec/factories/(.+)\.rb$}) { |m|
["spec/models/", "spec/controllers/#{m[1]}_controller_spec.rb"]
}
答案 1 :(得分:1)
经过一番搜索后,我偶然发现了this要点并提取出来:
watch(%r{^spec/factories/(.+)\.rb$})
其中according to the documentation告诉当前警卫注意spec/factories/
答案 2 :(得分:1)
更多地限制与工厂相关的特定规格,它应该是:
require 'active_support/inflector'
watch(%r{^spec/factories/(.+)\.rb$}) do |m|
%W{
spec/models/#{m[1].singularize}_spec.rb
spec/controllers/#{m[1]}_controller_spec.rb
}
end
答案 3 :(得分:0)
我在我的macbook上使用它,你应该在你的Guardfile中添加这一行
watch(%r{^spec/factories/(.+)\.rb$}) { rspec.spec_dir }
它将自动运行整个specs文件。
如果您设置块的返回值为&spec; model&model 39,则只运行spec / models目录下的规格。
答案 4 :(得分:0)
我使用Dir.glob
来获取我想要监视的所有文件名的列表。这也适用于嵌套文件夹结构。
require 'active_support/inflector'
watch(%r{^spec/factories/(.+)\.rb$}) { |m|
[
*Dir.glob("spec/models/#{m[1].singularize}_spec.rb"),
*Dir.glob("spec/requests/**/#{m[1]}_spec.rb"),
*Dir.glob("spec/controllers/**/#{m[1]}_controller_spec.rb"),
]
}