Автоматически обрабатывать недостающее соединение с базой данных в ActiveRecord? - PullRequest
3 голосов
/ 28 октября 2009

С запуском Amazon 1001 * Relational Database Service сегодня и их «принудительными» окнами обслуживания я подумал, есть ли у кого-нибудь решения для обработки отсутствующего соединения с базой данных в Rails.

В идеале я хотел бы иметь возможность автоматически представлять посетителям страницу обслуживания, если пропадает соединение с базой данных (т. Е. Amazon осуществляет их обслуживание) - кто-нибудь когда-либо делал что-либо подобное?

Приветствие Arfon

1 Ответ

4 голосов
/ 28 октября 2009

Это можно сделать с помощью промежуточного программного обеспечения для стойки:

class RescueFromNoDB < Struct.new(:app)
  def call(env)
    app.call(env)
  rescue Mysql::Error => e
    if e.message =~ /Can't connect to/
      [500, {"Content-Type" => "text/plain"}, ["Can't get to the DB server right now."]]
    else
      raise
    end
  end
end

Очевидно, что вы можете настроить сообщение об ошибке, и бит e.message =~ /Can't connect to/ может быть просто паранойей, почти все другие ошибки SQL должны быть обнаружены внутри ActionController::Dispatcher.

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