Автоматически обрабатывать отсутствующее соединение с базой данных в ActiveRecord?

StackOverflow https://stackoverflow.com/questions/1634046

Вопрос

С запуском Amazon Служба реляционных баз данных сегодня и в их "принудительных" окнах обслуживания я задавался вопросом, есть ли у кого-нибудь какие-либо решения для обработки отсутствующего подключения к базе данных в Rails.

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

Приветствия Арфон

Это было полезно?

Решение

Вы можете сделать это с помощью промежуточного программного обеспечения Rack:

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top