class Ramaze::Reloader::WatchStat

Public Class Methods

new() click to toggle source
# File lib/ramaze/reloader/watch_stat.rb, line 4
def initialize
  # @files[file_path] = stat
  @files = {}
  @last = Time.now
end

Public Instance Methods

call(cooldown) { || ... } click to toggle source
# File lib/ramaze/reloader/watch_stat.rb, line 10
def call(cooldown)
  if cooldown and Time.now > @last + cooldown
    yield
    @last = Time.now
  end
end
changed_files() { |file| ... } click to toggle source

return files changed since last call

# File lib/ramaze/reloader/watch_stat.rb, line 40
def changed_files
  @files.each do |file, stat|
    if new_stat = safe_stat(file)
      if new_stat.mtime > stat.mtime
        @files[file] = new_stat
        yield(file)
      end
    end
  end
end
close() click to toggle source

no need for cleanup

# File lib/ramaze/reloader/watch_stat.rb, line 36
def close
end
remove_watch(file) click to toggle source

stop watching a file for changes

# File lib/ramaze/reloader/watch_stat.rb, line 31
def remove_watch(file)
  @files.delete(file)
end
safe_stat(file) click to toggle source
# File lib/ramaze/reloader/watch_stat.rb, line 51
def safe_stat(file)
  File.stat(file)
rescue Errno::ENOENT, Errno::ENOTDIR
  nil
end
watch(file) click to toggle source

start watching a file for changes true if succeeded, false if failure

# File lib/ramaze/reloader/watch_stat.rb, line 19
def watch(file)
  return true if watching?(file) # if already watching
  if stat = safe_stat(file)
    @files[file] = stat
  end
end
watching?(file) click to toggle source
# File lib/ramaze/reloader/watch_stat.rb, line 26
def watching?(file)
  @files.has_key?(file)
end