remove env access from debug_exceptions

Creates fewer request objects and helps to abstract away from internals
This commit is contained in:
Aaron Patterson 2015-08-23 17:18:02 -07:00
parent f16a33b68e
commit feb248ca76

@ -55,18 +55,17 @@ def call(env)
response
rescue Exception => exception
raise exception unless request.show_exceptions?
render_exception(env, exception)
render_exception(request, exception)
end
private
def render_exception(env, exception)
backtrace_cleaner = env['action_dispatch.backtrace_cleaner']
def render_exception(request, exception)
backtrace_cleaner = request.get_header('action_dispatch.backtrace_cleaner')
wrapper = ExceptionWrapper.new(backtrace_cleaner, exception)
log_error(env, wrapper)
log_error(request, wrapper)
if env['action_dispatch.show_detailed_exceptions']
request = Request.new(env)
if request.get_header('action_dispatch.show_detailed_exceptions')
traces = wrapper.traces
trace_to_show = 'Application Trace'
@ -108,8 +107,8 @@ def render(status, body, format)
[status, {'Content-Type' => "#{format}; charset=#{Response.default_charset}", 'Content-Length' => body.bytesize.to_s}, [body]]
end
def log_error(env, wrapper)
logger = logger(env)
def log_error(request, wrapper)
logger = logger(request)
return unless logger
exception = wrapper.exception
@ -125,8 +124,8 @@ def log_error(env, wrapper)
end
end
def logger(env)
env['action_dispatch.logger'] || stderr_logger
def logger(request)
request.logger || stderr_logger
end
def stderr_logger