aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@github.com>2019-01-25 11:44:13 -0800
committerGitHub <noreply@github.com>2019-01-25 11:44:13 -0800
commitc7e7a4c79b21c7b9ee5b81589f4b4812b747ca59 (patch)
treef5761d380c1cfb00321c28acec72a9b0160ed406 /actionpack/lib/action_dispatch/middleware/exception_wrapper.rb
parentbf3a8a0e6ce13b7db50abe5288d2cc74c2e8975e (diff)
parentef40fb6fd88f2e3c3f989aef65e3ddddfadee814 (diff)
downloadrails-c7e7a4c79b21c7b9ee5b81589f4b4812b747ca59.tar.gz
rails-c7e7a4c79b21c7b9ee5b81589f4b4812b747ca59.tar.bz2
rails-c7e7a4c79b21c7b9ee5b81589f4b4812b747ca59.zip
Merge pull request #35049 from yuki24/fix-33414
Fixed a bug where the debug view does not show the error page properly
Diffstat (limited to 'actionpack/lib/action_dispatch/middleware/exception_wrapper.rb')
-rw-r--r--actionpack/lib/action_dispatch/middleware/exception_wrapper.rb24
1 files changed, 14 insertions, 10 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb b/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb
index fb2b2bd3b0..1fb3e9db00 100644
--- a/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb
+++ b/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb
@@ -31,22 +31,34 @@ module ActionDispatch
"ActionController::MissingExactTemplate" => "missing_exact_template",
)
+ cattr_accessor :wrapper_exceptions, default: [
+ "ActionView::Template::Error"
+ ]
+
attr_reader :backtrace_cleaner, :exception, :wrapped_causes, :line_number, :file
def initialize(backtrace_cleaner, exception)
@backtrace_cleaner = backtrace_cleaner
- @exception = original_exception(exception)
+ @exception = exception
@wrapped_causes = wrapped_causes_for(exception, backtrace_cleaner)
expand_backtrace if exception.is_a?(SyntaxError) || exception.cause.is_a?(SyntaxError)
end
+ def unwrapped_exception
+ if wrapper_exceptions.include?(exception.class.to_s)
+ exception.cause
+ else
+ exception
+ end
+ end
+
def rescue_template
@@rescue_templates[@exception.class.name]
end
def status_code
- self.class.status_code_for_exception(@exception.class.name)
+ self.class.status_code_for_exception(unwrapped_exception.class.name)
end
def application_trace
@@ -122,14 +134,6 @@ module ActionDispatch
Array(@exception.backtrace)
end
- def original_exception(exception)
- if @@rescue_responses.has_key?(exception.cause.class.name)
- exception.cause
- else
- exception
- end
- end
-
def causes_for(exception)
return enum_for(__method__, exception) unless block_given?