diff options
author | José Valim <jose.valim@gmail.com> | 2011-12-13 11:43:13 -0800 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-12-13 11:43:13 -0800 |
commit | 5dc4868962b77858ce477e17dbaf07bb4155d38d (patch) | |
tree | 54824519f9e5dbbb4e0cb3381d9176bae8e7104d | |
parent | ab802e72dc08a44e1a9fe767635dfd184274caad (diff) | |
parent | 081431fdf180ec7395c769793b2270d244566ca2 (diff) | |
download | rails-5dc4868962b77858ce477e17dbaf07bb4155d38d.tar.gz rails-5dc4868962b77858ce477e17dbaf07bb4155d38d.tar.bz2 rails-5dc4868962b77858ce477e17dbaf07bb4155d38d.zip |
Merge pull request #3970 from lest/backtrace-when-silenced
log exception backtrace when all backtrace lines silenced
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/debug_exceptions.rb | 5 | ||||
-rw-r--r-- | actionpack/test/dispatch/debug_exceptions_test.rb | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb b/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb index 417701ea54..cd4af82c6e 100644 --- a/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb +++ b/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb @@ -59,10 +59,13 @@ module ActionDispatch exception = wrapper.exception + trace = wrapper.application_trace + trace = wrapper.framework_trace if trace.empty? + ActiveSupport::Deprecation.silence do message = "\n#{exception.class} (#{exception.message}):\n" message << exception.annoted_source_code.to_s if exception.respond_to?(:annoted_source_code) - message << " " << wrapper.application_trace.join("\n ") + message << " " << trace.join("\n ") logger.fatal("#{message}\n\n") end end diff --git a/actionpack/test/dispatch/debug_exceptions_test.rb b/actionpack/test/dispatch/debug_exceptions_test.rb index f7411c7729..6133bfe338 100644 --- a/actionpack/test/dispatch/debug_exceptions_test.rb +++ b/actionpack/test/dispatch/debug_exceptions_test.rb @@ -122,4 +122,17 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest get "/", {}, {'action_dispatch.show_exceptions' => true, 'action_dispatch.backtrace_cleaner' => cleaner} assert_match(/passed backtrace cleaner/, body) end + + test 'logs exception backtrace when all lines silenced' do + output = StringIO.new + backtrace_cleaner = ActiveSupport::BacktraceCleaner.new + backtrace_cleaner.add_silencer { true } + + env = {'action_dispatch.show_exceptions' => true, + 'action_dispatch.logger' => Logger.new(output), + 'action_dispatch.backtrace_cleaner' => backtrace_cleaner} + + get "/", {}, env + assert_operator (output.rewind && output.read).lines.count, :>, 10 + end end |