如何将 guard-rspec 映射到多个不同的文件?
How to map guard-rspec to multiple different files?
假设我在 app/controllers
中有一个 controller
我有一系列 request
规格,一个对应控制器中的每个动作。我如何在观看控制器时告诉 guard 不仅要 运行 spec/controllers/controller_spec.rb
文件还要 运行:
spec/requests/controller/index_spec
spec/requests/controller/create_spec
spec/requests/controller/update_spec
spec/requests/controller/delete_spec
spec/requests/controller/show_spec
?
更新:
在@TheChamps 的帮助下,我开始了。对于这个用例,这是正确的方法吗?
# Controller could be under api/v1 or root level.
watch(%r{^app\/controllers(\/api\/v1\/)?(.+)_(controller)\.rb}) do |m|
"spec/requests#{m[1]}#{m[2]}/"
end
您可以使用 guard-rails
gem 由 $ guard init rails
生成具有 Rails.
默认配置的守卫清单文件
watch
命令非常简单。通过 regex,您可以定义观看的位置和触发的内容。
一个例子
从他们的文档中获取这个标准命令:
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
第一部分
watch(%r{^app/(.+)\.rb$})
它会查找 app
目录中以 .rb
结尾的任何文件,并将路径作为参数 - 通过 ()
。如果保存匹配文件,例如 app/models/users.rb
,model/users
将传递给:
块
{ |m| "spec/#{m[1]}_spec.rb" }
通过插入传递的参数,它会在 spec
目录中查找特定文件以触发 - spec/models/user_spec.rb
.
您的用例
保存您的控制器文件后,您想要触发位于 /requests
下以及该控制器 之后名为 的子文件夹下的任何文件。现在你应该可以很容易地理解这个命令,它实现了这一点。
watch('app/controllers/(.*)_controller.rb') { |m| "spec/requests/#{m}" }
假设我在 app/controllers
controller
我有一系列 request
规格,一个对应控制器中的每个动作。我如何在观看控制器时告诉 guard 不仅要 运行 spec/controllers/controller_spec.rb
文件还要 运行:
spec/requests/controller/index_spec
spec/requests/controller/create_spec
spec/requests/controller/update_spec
spec/requests/controller/delete_spec
spec/requests/controller/show_spec
?
更新:
在@TheChamps 的帮助下,我开始了。对于这个用例,这是正确的方法吗?
# Controller could be under api/v1 or root level.
watch(%r{^app\/controllers(\/api\/v1\/)?(.+)_(controller)\.rb}) do |m|
"spec/requests#{m[1]}#{m[2]}/"
end
您可以使用 guard-rails
gem 由 $ guard init rails
生成具有 Rails.
watch
命令非常简单。通过 regex,您可以定义观看的位置和触发的内容。
一个例子
从他们的文档中获取这个标准命令:
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
第一部分
watch(%r{^app/(.+)\.rb$})
它会查找 app
目录中以 .rb
结尾的任何文件,并将路径作为参数 - 通过 ()
。如果保存匹配文件,例如 app/models/users.rb
,model/users
将传递给:
块
{ |m| "spec/#{m[1]}_spec.rb" }
通过插入传递的参数,它会在 spec
目录中查找特定文件以触发 - spec/models/user_spec.rb
.
您的用例
保存您的控制器文件后,您想要触发位于 /requests
下以及该控制器 之后名为 的子文件夹下的任何文件。现在你应该可以很容易地理解这个命令,它实现了这一点。
watch('app/controllers/(.*)_controller.rb') { |m| "spec/requests/#{m}" }