diff options
author | Alberto Fernández Capel <alberto.fernandez-capel@overleaf.com> | 2018-01-04 11:27:14 +0000 |
---|---|---|
committer | Alberto F. Capel <afcapel@gmail.com> | 2019-05-28 20:39:10 +0100 |
commit | c8f4c53d55762010496cf801cf1ec726e35d75df (patch) | |
tree | 2d1231b2bfb15d3a80c6b5ef11e7712288f5f270 /actionpack/test/dispatch | |
parent | f47be7bd96827af9f0b9b165666c6626cefc008f (diff) | |
download | rails-c8f4c53d55762010496cf801cf1ec726e35d75df.tar.gz rails-c8f4c53d55762010496cf801cf1ec726e35d75df.tar.bz2 rails-c8f4c53d55762010496cf801cf1ec726e35d75df.zip |
Reduce log noise handling ActionController::RoutingErrors
Each time a missing route is hit 32 lines of internal rails traces
are written to the log. This is overly verbose and doesn't offer
any actionable information to the user.
With this change we'll still write an error message showing the
route error but the trace will be omitted.
Diffstat (limited to 'actionpack/test/dispatch')
-rw-r--r-- | actionpack/test/dispatch/debug_exceptions_test.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/debug_exceptions_test.rb b/actionpack/test/dispatch/debug_exceptions_test.rb index 3e57e8f4d9..7adf935849 100644 --- a/actionpack/test/dispatch/debug_exceptions_test.rb +++ b/actionpack/test/dispatch/debug_exceptions_test.rb @@ -466,6 +466,8 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest end test "logs exception backtrace when all lines silenced" do + @app = DevelopmentApp + output = StringIO.new backtrace_cleaner = ActiveSupport::BacktraceCleaner.new backtrace_cleaner.add_silencer { true } @@ -478,6 +480,27 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest assert_operator((output.rewind && output.read).lines.count, :>, 10) end + test "doesn't log the framework backtrace when error type is a routing error" do + @app = ProductionApp + + 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 } + + assert_raises ActionController::RoutingError do + get "/pass", headers: env + end + + log = output.rewind && output.read + + assert_includes log, "ActionController::RoutingError (No route matches [GET] \"/pass\")" + assert_equal 3, log.lines.count + end + test "display backtrace when error type is SyntaxError" do @app = DevelopmentApp |