guard gem不看文件更改

我在用:

  • 铁轨5.1.5
  • 后卫2.14.2
  • linuxmint

昨天我安装了后卫,插件是livereloadminitest

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

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

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

发现并解决了问题。

问题:警卫不会对文件更改做出反应(正在观察)

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

解:

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 

我希望这对你有用。

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

 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