私はガード(ルビージェム)をセットアップしていて、それを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
Coffeescriptファイルを編集すると、「jsisnew」が2回出力されるようです。デバッグをオンにすると、後に実行されるようです
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ファイルを直接編集した場合、1回だけ起動するようです。フックがどのように機能するか少し混乱しましたが、別のガードからフックをキー入力できますか?このコードをcoffeescriptガードのコールバックで実行する必要がありますか?私はグループを使用しようとしていて、グループに属していて、代わりにコールバックを使用する場合にコーヒーガードを繰り返す必要がない場合にのみ、シェル部分を実行しました。
コーヒーが発砲したときにシェルガードのトリガーを2回停止する方法について何か考えはありますか?