2012-06-25 9 views
5

Iセットアップ以下の構造を有するサンプルプロジェクトを実行します実行するにはguard。そのファイルに何かをエコーすると、ガードは変更を2回登録します。シェル実行中のガードでGuardは、シェルスクリプトを2回

$ echo blah >> test.txt 

:1つのシェルでは

> [test.txt] 2012-06-26 00:40:22 +0200 
> [test.txt] 2012-06-26 00:40:22 +0200 

同じ挙動が、私はちょうどecho blah > test.txtを実行したときに興味深いことに、ガードは一度しか発動などのvim /ナノを占めています。

これが起こるのをどうやって防ぐことができるか、これが予期される動作であるかどうか、

EDIT:githubの上の問題を開い:https://github.com/guard/guard/issues/297#issuecomment-6586266

答えて

5

guardおよび/またはguard-shellのバグ/機能のように思えます。私はそれについてgithubで問題を報告したい。私は何かを明らかに欠けているかどうかわからなかった

# Guardfile 
class GFilter 
    def self.run(files, &block) 
    @mtimes ||= Hash.new 

    files.each { |f| 
     mtime = File.mtime(f) 
     next if @mtimes[f] == mtime 
     @mtimes[f] = mtime 

     yield f 
    } 
    end 
end 

guard 'shell' do 
    watch(/^test\.txt$/) {|m| GFilter.run(m) { |f| puts "File: #{f}" } } 
end 
+0

グレート:):それまでの間、ここでmtimeは前回と同じである実行中のファイルを防ぐために(醜い)回避策です。返信いただきありがとうございます! – jabalsad

関連する問題