after_filter для исключений - PullRequest
       14

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

12 голосов
/ 02 сентября 2010

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

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

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

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

Спасибо!

1 Ответ

10 голосов
/ 02 сентября 2010

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

# 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 или в отдельный класс контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...