【问题标题】:Guard is not detecting controller files changesGuard 未检测到控制器文件更改
【发布时间】:2019-09-19 02:34:15
【问题描述】:

我有一个 Rails API,所以所有控制器都位于 app/controllers/api/v1/ 中,当我保存控制器文件时,测试文件不会运行。

例如,我在spec/requests/api/v1/images_controller_spec.rb 中有一个文件app/controllers/api/v1/images_controller.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

感谢您的帮助,因为我不明白这一切是如何运作的。谢谢。

【问题讨论】:

    标签: guard


    【解决方案1】:

    我自己已经回答了这个问题。我将测试文件添加到spec/controllers/api/v1/ 并保存了控制器文件并运行了测试,所以它告诉我我需要另一个规则

    rspec.spec.call("requests/#{m[1]}_controller")

    它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      相关资源
      最近更新 更多