Method: Modern::App#call

Defined in:
lib/modern/app.rb

#call(env) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/modern/app.rb', line 56

def call(env)
  request = Modern::Request.new(env, logger)
  response = Modern::Response.new(request)
  response.headers["X-Request-Id"] = request.request_id

  route = @router.resolve(request.request_method, request.path_info)

  begin
    raise Modern::Errors::NotFoundError if route.nil?

    process_request(request, response, route)
    response.finish
  rescue Modern::Redirect => redirect
    response.redirect(redirect.redirect_to, redirect.status)
  rescue Modern::Errors::WebError => err
    catch_web_error(response, err)
  rescue StandardError => err
    catch_unhandled_error(response, err)
  ensure
    response.finish
    request.cleanup
  end

  response.to_a
end