guard gem不看文件更改

时间:2018-03-12 02:28:12

标签: ruby-on-rails guard

我正在使用:

  • rails 5.1.5
  • guard 2.14.2
  • linuxmint

昨天我安装了后卫,插件 livereload minitest

我使用 guard 来自动化我的测试,并确保没有任何错误被打破。

我发现由于某种原因,后卫没有对文件更改做出反应。当它首次启动时,它运行所有测试,给我一个提示,我必须在提示中按Enter键,然后,它再次开始所有测试 < / em> ,每轮大约需要1小时。

2 个答案:

答案 0 :(得分:0)

谷歌搜索并尝试了我发现的一切后,似乎没有任何效果。所以,我冷静下来,决定和守卫一起玩。

发现并解决了问题。

问题:警卫对文件更改没有反应(正在观看)

原因: Guardfile中使用的正则表达式,似乎与rails 5.1.5文件路径不兼容

<强> SOLUTION:

guard :minitest do
  watch(%r{^app/views/(.+)_mailer/.+})  { |m| "test/mailers/#{m[1]}_mailer_test.rb" }
  watch(%r{^test/.+_test\.rb$})
  watch(%r{^test/test_helper\.rb$})     { 'test' }
  watch(%r{^app/controllers/(.*)\.rb$}) { |m| "test/functional/#{m[1]}_test.rb" }
  watch(%r{^app/controllers/(.*)\.rb$}) { |m| "test/controllers/#{m[1]}_test.rb" }
  watch(%r{^app/controllers/(.*)\.rb$}) { |m| "test/integration/#{m[1]}_test.rb" }
  watch(%r{^app/helpers/(.*)\.rb$})     { |m| "test/helpers/#{m[1]}_test.rb" }
  watch(%r{^app/mailers/(.*)\.rb$})     { |m| "test/mailers/#{m[1]}_test.rb" }
  watch(%r{^app/models/(.*)\.rb$})      { |m| "test/models/#{m[1]}_test.rb" }
  watch(%r{^app/veiws/(.*)\.rb$})       { |m| "test/system/#{m[1]}_test.rb" }
end

我希望这对你有用。

答案 1 :(得分:0)

我很好地调整了正则表达式。他们来了:

guard :minitest do
  watch(%r{test\/.+\.rb})
  watch(%r{app\/controllers\/(.*)\.rb})       { |m| "test/controllers/#{m[1]}_test.rb" }
  watch(%r{app\/controllers\/(.*)\.rb})       { |m| "test/integration/#{m[1]}_test.rb" }
  watch(%r{app\/helpers\/(.*)\.rb})           { |m| "test/helpers/#{m[1]}_test.rb" }
  watch(%r{app\/models\/(.*)\.rb})            { |m| "test/models/#{m[1]}_test.rb" }
  watch(%r{app\/mailers\/(.*)\.rb})           { |m| "test/mailers/#{m[1]}_test.rb" }
  watch(%r{app\/views\/(.*)\/.*\.html\.haml}) { |m| "test/system/#{m[1]}_test.rb" }
  watch(%r{app\/views\/(.*)\/.*\.coffee})     { |m| "test/system/#{m[1]}_test.rb" }
end