guard - Guard 未检测到控制器文件更改
问题描述
我有一个 Rails API,所以所有控制器都在app/controllers/api/v1/
其中,当我保存控制器文件时,测试文件不会运行。
例如,我有一个文件app/controllers/api/v1/images_controller.rb
和一个测试文件在spec/requests/api/v1/images_controller_spec.rb
. 当我保存控制器文件时,测试文件没有运行,但是当我保存测试文件时,测试文件运行。
这是我的 Guardfile
clearing :on
guard :rspec, cmd: 'bundle exec rspec' do
require 'guard/rspec/dsl'
dsl = Guard::RSpec::Dsl.new(self)
# Feel free to open issues for suggestions and improvements
# RSpec files
rspec = dsl.rspec
watch(rspec.spec_helper) { rspec.spec_dir }
watch(rspec.spec_support) { rspec.spec_dir }
watch(rspec.spec_files)
# Ruby files
ruby = dsl.ruby
dsl.watch_spec_files_for(ruby.lib_files)
# Rails files
rails = dsl.rails(view_extensions: %w[erb haml slim])
dsl.watch_spec_files_for(rails.app_files)
dsl.watch_spec_files_for(rails.views)
watch(rails.controllers) do |m|
[
rspec.spec.call("routing/#{m[1]}_routing"),
rspec.spec.call("controllers/#{m[1]}_controller"),
rspec.spec.call("acceptance/#{m[1]}")
]
end
# Rails config changes
watch(rails.spec_helper) { rspec.spec_dir }
watch(rails.routes) { "#{rspec.spec_dir}/routing" }
watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
end
感谢您的帮助,因为我不明白这一切是如何运作的。谢谢你。
解决方案
我自己已经回答了这个问题。我将测试文件添加到spec/controllers/api/v1/
并保存了控制器文件并运行了测试,所以它告诉我我需要另一个规则
rspec.spec.call("requests/#{m[1]}_controller")
它有效。
推荐阅读
- reactjs - 从 redux 商店加载 pdf
- elasticsearch - ELK 堆栈用户定义的模式识别
- javascript - 我们可以使用 JS 或 jQuery 启用或禁用 chrome 中的硬重载菜单吗?
- asp.net - ASP.NET MVC 将 KeyValuePair 清空到控制器中
- karate - 无法将变量值解析为数组变量
- laravel - 如何在laravel中使用自连接获取一张表中的记录
- pdf-generation - 计算编号 pdf 生成之前的页面数
- c# - 带有 Selenium 的 C#:当前上下文中不存在“SelectElement”
- svg - SVG 文本移位/文本更改动画
- apache - 具有多个 RewriteCond 的 Apache RewriteMap 不起作用