diff --git a/lib/puma/error_logger.rb b/lib/puma/error_logger.rb index e70b1b85c4..7a2bb462b0 100644 --- a/lib/puma/error_logger.rb +++ b/lib/puma/error_logger.rb @@ -51,8 +51,8 @@ def debug(options={}) string_block = [] string_block << title(options) - string_block << request_dump(req) if req - string_block << error_backtrace(options) if error + string_block << request_dump(req) if request_parsed?(req) + string_block << error.backtrace if error ioerr.puts string_block.join("\n") end diff --git a/test/test_error_logger.rb b/test/test_error_logger.rb index 1ca19ec20e..38aba15522 100644 --- a/test/test_error_logger.rb +++ b/test/test_error_logger.rb @@ -59,6 +59,23 @@ def test_debug_with_debug_mode end end + def test_debug_backtrace_logging + with_debug_mode do + def dummy_error + raise StandardError.new('non-blank') + rescue => e + Puma::ErrorLogger.stdio.debug(error: e) + end + + _, err = capture_io do + dummy_error + end + + assert_match %r!non-blank!, err + assert_match %r!:in `dummy_error'!, err + end + end + private def with_debug_mode