mirror of https://github.com/rails/rails
Merge pull request #41223 from janko/controller-throw-log-subscriber
Handle throwing in controller action in log subscriber
This commit is contained in:
commit
b32823a7ec
|
@ -1,5 +1,9 @@
|
|||
## Unreleased
|
||||
|
||||
* Fix error in `ActionController::LogSubscriber` that would happen when throwing inside a controller action.
|
||||
|
||||
*Janko Marohnić*
|
||||
|
||||
* Change the request method to a `GET` when passing failed requests down to `config.exceptions_app`.
|
||||
|
||||
*Alex Robbin*
|
||||
|
|
|
@ -23,7 +23,7 @@ module ActionController
|
|||
additions = ActionController::Base.log_process_action(payload)
|
||||
status = payload[:status]
|
||||
|
||||
if status.nil? && (exception_class_name = payload[:exception].first)
|
||||
if status.nil? && (exception_class_name = payload[:exception]&.first)
|
||||
status = ActionDispatch::ExceptionWrapper.status_code_for_exception(exception_class_name)
|
||||
end
|
||||
|
||||
|
|
|
@ -64,6 +64,10 @@ module Another
|
|||
render inline: "<%= cache_unless(true, 'foo') { 'bar' } %>"
|
||||
end
|
||||
|
||||
def with_throw
|
||||
throw :halt
|
||||
end
|
||||
|
||||
def with_exception
|
||||
raise Exception
|
||||
end
|
||||
|
@ -190,6 +194,14 @@ class ACLogSubscriberTest < ActionController::TestCase
|
|||
assert_match(/Completed 200 OK in \d+ms/, logs[1])
|
||||
end
|
||||
|
||||
def test_process_action_with_throw
|
||||
catch(:halt) do
|
||||
get :with_throw
|
||||
wait
|
||||
end
|
||||
assert_match(/Completed in \d+ms/, logs[1])
|
||||
end
|
||||
|
||||
def test_append_info_to_payload_is_called_even_with_exception
|
||||
begin
|
||||
get :with_exception
|
||||
|
|
Loading…
Reference in New Issue