class Rack::Turnout

Public Class Methods

new(app, config={}) click to toggle source
# File lib/rack/turnout.rb, line 5
def initialize(app, config={})
  @app = app

  Turnout.config.update config

  if config[:app_root].nil? && app.respond_to?(:app_root)
    Turnout.config.app_root = app.app_root
  end
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/turnout.rb, line 15
def call(env)
  request = Turnout::Request.new(env)
  settings = Turnout::MaintenanceFile.find

  if settings && !request.allowed?(settings)
    page_class = Turnout::MaintenancePage.best_for(env)
    page = page_class.new(settings.reason, env: env)

    page.rack_response(settings.response_code, settings.retry_after)
  else
    @app.call(env)
  end
end