class PhusionPassenger::Utils::FileSystemWatcher
def self.opens_files?
def self.opens_files? return false end
def changed?
def changed? return @dirs.any? { |dir_info| dir_info.changed? } || @files.any? { |file_info| file_info.changed? } end
def close
def close end
def initialize(filenames, termination_pipe = nil)
def initialize(filenames, termination_pipe = nil) @poll_interval = 3 @termination_pipe = termination_pipe @dirs = [] @files = [] begin filenames.each do |filename| stat = File.stat(filename) if stat.directory? @dirs << DirInfo.new(filename, stat) else @files << FileInfo.new(filename, stat) end end rescue Errno::EACCES, Errno::ENOENT @dirs = @files = nil end end
def wait_for_change
def wait_for_change if !@dirs return false end while true if changed? return true elsif select([@termination_pipe], nil, nil, @poll_interval) return nil end end end