Rubyでファイル監視って

どうやるのか。

ん〜結局普通はどうやってるのか?
 
普通に考えると別スレッドで何秒間でタイムスタンプ比較して、
イベントを発生させる事になるんだろうけど。
 
こんな時の
doukaku.org - 
だったりするのだが、まだ乗ってない。
 
暇があったらWatchクラスでも作ってみるか。
 
。。。と。
 
思ったらWatchClass。メーリングリストにあるじゃん。
 

class Watch
    Undefval = [0]
    def initialize
        @level = 1
        @exp = ""
        @expval = Undefval
        @blk = nil
    end

    def set_watch(exp, &blk)
        @blk = blk
        @exp = exp
        set_trace_func proc{|event, file, line, id, binding, klass|
            nlevel = @level
            case event
            when 'call', 'class'
                nlevel = nlevel + 1
                @level = @level + 1
            when 'return', 'end'
                nlevel = nlevel - 1
                if nlevel < 0 then
                    set_trace_func nil
                end
            end

            if @level == 0 then
                val = eval @exp, binding
                if @expval == Undefval
                    @expval = val
                elsif @expval != val then
                    @blk.call(val)
                    @expval = val
                end
            end

            @level = nlevel
        }
    end
end

ちょっと弄ってFileWatchClass作ってみるか。