たまたま見つけたので使い方をメモ。
指定されたファイルが更新されたら、何かを実行するというのを
簡潔にかけるようになる。
サンプルコード
# coding: utf-8
require 'active_support/file_update_checker'
path = File.absolute_path('./foo.txt')
checker = ActiveSupport::FileUpdateChecker.new([path]) do
puts File.read(path)
end
10.times do |i|
puts 'check: ' . i.to_s
checker.execute_if_updated # 更新されていたら、blockを実行する
# checker.execute # こっちは更新されていなくても実行する
sleep(2)
end
このスクリプトを動かしながら、
以下を実行すると、puts File.read(path)
の結果が表示される。
echo "foo" >> foo.txt
中々使い道が難しい。