Parent

Class Index [+]

Quicksearch

ActionDispatch::DebugExceptions

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

Constants

RESCUES_TEMPLATE_PATH

Public Class Methods

new(app) click to toggle source
    # File lib/action_dispatch/middleware/debug_exceptions.rb, line 10
10:     def initialize(app)
11:       @app = app
12:     end

Public Instance Methods

call(env) click to toggle source
    # File lib/action_dispatch/middleware/debug_exceptions.rb, line 14
14:     def call(env)
15:       begin
16:         response = @app.call(env)
17: 
18:         if response[1]['X-Cascade'] == 'pass'
19:           body = response[2]
20:           body.close if body.respond_to?(:close)
21:           raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
22:         end
23:       rescue Exception => exception
24:         raise exception if env['action_dispatch.show_exceptions'] == false
25:       end
26: 
27:       exception ? render_exception(env, exception) : response
28:     end

Private Instance Methods

log_error(env, wrapper) click to toggle source
    # File lib/action_dispatch/middleware/debug_exceptions.rb, line 57
57:     def log_error(env, wrapper)
58:       logger = logger(env)
59:       return unless logger
60: 
61:       exception = wrapper.exception
62: 
63:       trace = wrapper.application_trace
64:       trace = wrapper.framework_trace if trace.empty?
65: 
66:       ActiveSupport::Deprecation.silence do
67:         message = "\n#{exception.class} (#{exception.message}):\n"
68:         message << exception.annoted_source_code.to_s if exception.respond_to?(:annoted_source_code)
69:         message << "  " << trace.join("\n  ")
70:         logger.fatal("#{message}\n\n")
71:       end
72:     end
logger(env) click to toggle source
    # File lib/action_dispatch/middleware/debug_exceptions.rb, line 74
74:     def logger(env)
75:       env['action_dispatch.logger'] || stderr_logger
76:     end
render(status, body) click to toggle source
    # File lib/action_dispatch/middleware/debug_exceptions.rb, line 53
53:     def render(status, body)
54:       [status, {'Content-Type' => "text/html; charset=#{Response.default_charset}", 'Content-Length' => body.bytesize.to_s}, [body]]
55:     end
render_exception(env, exception) click to toggle source
    # File lib/action_dispatch/middleware/debug_exceptions.rb, line 32
32:     def render_exception(env, exception)
33:       wrapper = ExceptionWrapper.new(env, exception)
34:       log_error(env, wrapper)
35: 
36:       if env['action_dispatch.show_detailed_exceptions']
37:         template = ActionView::Base.new([RESCUES_TEMPLATE_PATH],
38:           :request => Request.new(env),
39:           :exception => wrapper.exception,
40:           :application_trace => wrapper.application_trace,
41:           :framework_trace => wrapper.framework_trace,
42:           :full_trace => wrapper.full_trace
43:         )
44: 
45:         file = "rescues/#{wrapper.rescue_template}"
46:         body = template.render(:template => file, :layout => 'rescues/layout')
47:         render(wrapper.status_code, body)
48:       else
49:         raise exception
50:       end
51:     end
stderr_logger() click to toggle source
    # File lib/action_dispatch/middleware/debug_exceptions.rb, line 78
78:     def stderr_logger
79:       @stderr_logger ||= Logger.new($stderr)
80:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.