Обработка TimeOut :: Error с повторной попыткой

У меня есть приложение, работающее на 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 Может ли вызвать исключение / перенаправление на страницу с ошибкой?

7
задан Christoffer 26 January 2012 в 15:37
поделиться