class Rack::Reloader

also respects a cool down time, during which nothing will be done.
It is performing a check/reload cycle at the start of every request, but
only when actively called.
Please note that this will not reload files in the background, it does so
call stat(2).
any file will only be checked once and there will only be made one system
What makes it especially suited for use in a production environment is that
This class acts as Rack middleware.
High performant source reloader

def call(env)

def call(env)
  if @cooldown and Time.now > @last + @cooldown
    if Thread.list.size > 1
      @reload_mutex.synchronize{ reload! }
    else
      reload!
    end
    @last = Time.now
  end
  @app.call(env)
end

def initialize(app, cooldown = 10, backend = Stat)

def initialize(app, cooldown = 10, backend = Stat)
  @app = app
  @cooldown = cooldown
  @last = (Time.now - cooldown)
  @cache = {}
  @mtimes = {}
  @reload_mutex = Mutex.new
  extend backend
end

def reload!(stderr = $stderr)

def reload!(stderr = $stderr)
  rotation do |file, mtime|
    previous_mtime = @mtimes[file] ||= mtime
    safe_load(file, mtime, stderr) if mtime > previous_mtime
  end
end

def safe_load(file, mtime, stderr = $stderr)

A safe Kernel::load, issuing the hooks depending on the results
def safe_load(file, mtime, stderr = $stderr)
  load(file)
  stderr.puts "#{self.class}: reloaded `#{file}'"
  file
rescue LoadError, SyntaxError => ex
  stderr.puts ex
ensure
  @mtimes[file] = mtime
end