Class: ActionDispatch::DebugExceptions

Inherits:
Object
  • Object
show all
Defined in:
lib/action_dispatch/middleware/debug_exceptions.rb

Overview

This middleware is responsible for logging exceptions and showing a debugging page in case the request is local.

Constant Summary collapse

RESCUES_TEMPLATE_PATH =
File.join(File.dirname(__FILE__), 'templates')

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ DebugExceptions

Returns a new instance of DebugExceptions


10
11
12
# File 'lib/action_dispatch/middleware/debug_exceptions.rb', line 10

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/action_dispatch/middleware/debug_exceptions.rb', line 14

def call(env)
  begin
    response = @app.call(env)

    if response[1]['X-Cascade'] == 'pass'
      body = response[2]
      body.close if body.respond_to?(:close)
      raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
    end
  rescue Exception => exception
    raise exception if env['action_dispatch.show_exceptions'] == false
  end

  exception ? render_exception(env, exception) : response
end