Class: Rack::ErrorHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/error_handler.rb,
lib/rack/error_handler/version.rb,
lib/rack/error_handler/request_error.rb

Defined Under Namespace

Classes: RequestError

Constant Summary collapse

DEFAULT_ERROR_MESSAGE =
'Internal Server Error'.freeze
VERSION =
'1.0.1'

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ ErrorHandler

Returns a new instance of ErrorHandler.



10
11
12
13
14
# File 'lib/rack/error_handler.rb', line 10

def initialize(app, options={})
  @app = app
  @logger = options.fetch(:logger)
  @error_message = options[:error_message] || DEFAULT_ERROR_MESSAGE
end

Instance Method Details

#call(env) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/rack/error_handler.rb', line 16

def call(env)
  app.call env

rescue => error
  request = Rack::Request.new env
  request_error = RequestError.new request, error
  logger.error(self.class) { request_error }
  [500, {}, [error_message]]
end