Подтвердить что ты не робот

After_filter для исключений

Есть ли что-то похожее на after_filter, который все еще работает, если действие вызывает исключение?

Я использую внешний регистратор (поскольку я нахожусь на Heroku); заголовки ответов фильтруются и регистрируются в файле after_filter. Если возникает исключение, фильтр не запускается, и у меня нет журнала данных заголовка ответа.

Если я попытаюсь подключиться к log_error или rescue_action_in_public, заголовок ответа не будет выполнен (так как после этого вызывается фактический рендер).

Есть ли еще одна функция, которую я могу переопределить, которая будет вызываться в эквивалентное время для файла after_filter, но всегда запускается независимо от того, выбрано ли исключение?

Спасибо!

4b9b3361

Ответ 1

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

# in a controller
around_filter :catch_exceptions

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

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