0

私はガード(ルビージェム)をセットアップしていて、それを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回停止する方法について何か考えはありますか?

4

1 に答える 1

1

Guard 1.0.0より前では、Guardプラグインから作成および更新された新しいファイルは、他のプラグインの後続のファイル変更をトリガーしませんでした。これは、たとえばCoffeeScriptプラグインとLiveReloadプラグインの問題でした。JavaScriptファイルが更新されたときに、LiveReloadがファイルをリロードしませんでした。回避策として、手動のファイルトリガーコードを追加しました。Listen gemを使用すると、この制限がなくなり、CoffeeScriptプラグインがファイルの変更を2回トリガーします。

マスターブランチで削除しました新しい宝石をリリースする前に試してみてください。これは、次を追加してマスターブランチを使用することで簡単に実行できます。

gem 'guard-coffeescript', :github => 'netzpirat/guard-coffeescript', :branch => 'master'

あなたにGemfile。正常に動作したら、できるだけ早く新しい宝石をリリースします。

于 2012-10-26T06:21:45.857 に答える