У меня есть настройка Guard (ruby gem), и, похоже, он работает на моем Mac, а настройка Guard из Guard-Coffee и Guard-Shell работает нормально. Вот соответствующий раздел моего 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
Кажется, что дважды выводится «js is new», если я редактирую файл coffeescript. С отладкой он, кажется, работает после
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 напрямую. Меня немного смутило, как работают хуки, могу ли я использовать хук от другого охранника? Должен ли я просто запустить этот код в обратном вызове в охраннике coffeescript? Я пытался использовать группы и выполнять часть оболочки только в том случае, если я был в группе и не хотел повторять кофейную защиту в случае, когда вместо этого я использовал бы обратный вызов.
Любые мысли о том, как я могу перестать дважды срабатывать защитный кожух, когда срабатывает кофе?