after_filter for exceptions

Is there something similar to an after_filter that still runs if the action raises an exception?

I'm using an external logger (since I'm on Heroku); the response headers are filtered and logged in the after_filter. If an exception is raised, the filter doesn't run, and I don't have a log of the response header data.

If I try to hook into log_error or rescue_action_in_public, the response header won't be complete (since the actual render is called after these).

Is there another function that I can override that will be called at the equivalent time to an after_filter, but always run regardless of whether an exception is thrown?

Thanks!

12
задан Andrew C 2 September 2010 в 03:07
поделиться

1 ответ

Вы можете использовать around_filter и перехватывать исключения. Например,

# in a controller
around_filter :catch_exceptions

def catch_exceptions
  yield
rescue ActiveRecord::RecordNotFound
  permission_denied_response # gives a stock error page
end

Вы можете добавить around_filter в класс контроллера application.rb или в класс отдельного контроллера.

10
ответ дан 2 December 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: