У меня есть приложение, работающее на Heroku, которое иногда сообщает Timeout :: Error и (ActionView :: Template :: Ошибка) «срок выполнения истек» .
Это происходит по всему веб-сайту (то есть не в конкретном контроллере), поэтому я хотел бы создать функцию, которая будет обрабатывать эти две ошибки, сначала повторяя два раза и перенаправление пользователя на страницу, которая сообщит им, что сервер занят.
Мой текущий план состоит в том, чтобы использовать следующее в ApplicationController:
rescue_from Timeout::Error, :with => :rescue_from_timeout
def rescue_from_timeout
sleep 2
retry
end
но это будет просто цикл и цикл. Я хочу, чтобы он прервался после двух попыток . Как я могу это сделать?
Кроме того, как я могу обработать ActionView :: Template :: Error для «Срок действия истек»? Я не хочу спасать все ActionView :: Template :: Error с повторными попытками, только те которые вызывают «выполнение истекло».
Это то, что говорит мое исключение:
[Exception] home#index (ActionView::Template::Error) "execution expired"
или
[Exception] calculations#result (ActionView::Template::Error) "Timeout::Error: execution expired
Мой вопрос, таким образом: как я могу обработать эти два типа ошибок, сначала дважды повторив попытку и t Может ли вызвать исключение / перенаправление на страницу с ошибкой?