Автоматически обрабатывать отсутствующее соединение с базой данных в ActiveRecord?
-
06-07-2019 - |
Вопрос
С запуском 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
.