1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #17480 from gsamokovarov/exception-wrapper-traces

Move DebugExceptions#traces_from_wrapper to ExceptionWrapper
This commit is contained in:
Rafael Mendonça França 2014-11-04 14:58:07 -02:00
commit 8602fc5e11
2 changed files with 23 additions and 29 deletions

View file

@ -35,7 +35,7 @@ module ActionDispatch
if env['action_dispatch.show_detailed_exceptions']
request = Request.new(env)
traces = traces_from_wrapper(wrapper)
traces = wrapper.traces
trace_to_show = 'Application Trace'
if traces[trace_to_show].empty?
@ -106,33 +106,5 @@ module ActionDispatch
ActionDispatch::Routing::RoutesInspector.new(@routes_app.routes.routes)
end
end
# Augment the exception traces by providing ids for all unique stack frame
def traces_from_wrapper(wrapper)
application_trace = wrapper.application_trace
framework_trace = wrapper.framework_trace
full_trace = wrapper.full_trace
appplication_trace_with_ids = []
framework_trace_with_ids = []
full_trace_with_ids = []
if full_trace
full_trace.each_with_index do |trace, idx|
id_trace = {
id: idx,
trace: trace
}
appplication_trace_with_ids << id_trace if application_trace.include? trace
framework_trace_with_ids << id_trace if framework_trace.include? trace
full_trace_with_ids << id_trace
end
end
{
"Application Trace" => appplication_trace_with_ids,
"Framework Trace" => framework_trace_with_ids,
"Full Trace" => full_trace_with_ids
}
end
end
end

View file

@ -57,6 +57,28 @@ module ActionDispatch
clean_backtrace(:all)
end
def traces
appplication_trace_with_ids = []
framework_trace_with_ids = []
full_trace_with_ids = []
if full_trace
full_trace.each_with_index do |trace, idx|
trace_with_id = { id: idx, trace: trace }
appplication_trace_with_ids << trace_with_id if application_trace.include?(trace)
framework_trace_with_ids << trace_with_id if framework_trace.include?(trace)
full_trace_with_ids << trace_with_id
end
end
{
"Application Trace" => appplication_trace_with_ids,
"Framework Trace" => framework_trace_with_ids,
"Full Trace" => full_trace_with_ids
}
end
def self.status_code_for_exception(class_name)
Rack::Utils.status_code(@@rescue_responses[class_name])
end