我已经设置了警卫(红宝石宝石),并且在我的 Mac 上似乎可以正常工作,并且从警卫咖啡和警卫外壳中设置警卫似乎工作正常。这是下面我的 Guardfile 的相关部分
guard 'coffeescript', :input => 'src/javascripts', :output => 'public/javascripts'
guard 'shell' do
watch( %r{^public/.+\.(js|css)$} ) do |m|
puts m.inspect
if m[1] == 'js'
puts 'a js is new!'
else
puts 'a css is new!'
end
puts %x{ echo #{File.mtime(m[0])} }
end
end
如果我编辑咖啡脚本文件,这似乎会输出两次“a js is new”。随着调试它似乎运行后
13:39:23 - DEBUG - Hook :run_on_changes_begin executed for Guard::CoffeeScript
13:39:23 - INFO - Compile src/javascripts/blah.coffee
13:39:23 - INFO - 01:39:23 PM Successfully generated public/javascripts/blah.js
["public/javascripts/blah.js", "js"]
a js is new!
和
13:39:23 - DEBUG - Hook :run_on_changes_end executed for Guard::CoffeeScript
["public/javascripts/blah.js", "js"]
a js is new!
如果我直接编辑 blah.js 文件,它似乎只触发一次。我对钩子的工作方式有点困惑,我可以从另一个守卫那里打钩吗?我应该在咖啡脚本守卫的回调中运行这段代码吗?我试图使用组,并且只在我在一个组中时才做外壳部分,并且不想在我使用回调的情况下重复咖啡卫士。
关于如何在咖啡一开火时停止触发两次外壳防护的任何想法?