class Servolux::Daemon::LogfileReader
@private
:stopdoc:
def initialize
def initialize @filename = nil @look_for = nil end
def look_for=( val )
def look_for=( val ) case val when nil; @look_for = nil when String; @look_for = Regexp.new(Regexp.escape(val)) when Regexp; @look_for = val else raise Error, "Don't know how to look for #{val.inspect} in the logfile" end end
def stat
def stat s = File.stat(@filename) if @filename && test(?f, @filename) s || OpenStruct.new(:mtime => Time.at(0), :size => 0) end
def updated?
def updated? s = stat @stat ||= s return false if s.nil? return false if @stat.mtime == s.mtime and @stat.size == s.size return true if @look_for.nil? File.open(@filename, 'r') do |fd| fd.seek @stat.size, IO::SEEK_SET while line = fd.gets return true if line =~ @look_for end end return false ensure @stat = s end