diff options
author | Aaron Patterson <tenderlove@github.com> | 2019-01-25 11:44:13 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-25 11:44:13 -0800 |
commit | c7e7a4c79b21c7b9ee5b81589f4b4812b747ca59 (patch) | |
tree | f5761d380c1cfb00321c28acec72a9b0160ed406 /actionpack/lib/action_dispatch/middleware/exception_wrapper.rb | |
parent | bf3a8a0e6ce13b7db50abe5288d2cc74c2e8975e (diff) | |
parent | ef40fb6fd88f2e3c3f989aef65e3ddddfadee814 (diff) | |
download | rails-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.rb | 24 |
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? |