Tratar automaticamente faltando conexão com o banco em ActiveRecord?
-
06-07-2019 - |
Pergunta
Com o lançamento de hoje banco de dados relacional Serviço da Amazon e suas janelas de manutenção 'forçados' Eu me perguntava se alguém tem alguma solução para lidar com uma conexão de dados em falta no Rails.
Idealmente, eu gostaria de ser capaz de apresentar automaticamente uma página de manutenção para os visitantes se os desaparece de conexão de banco de dados (ou seja, a Amazon está fazendo a sua manutenção?) - Alguém já fez qualquer coisa como isto
Felicidades Arfon
Solução
Você pode fazer isso com um rack Middleware:
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
Obviamente, você pode personalizar a mensagem de erro, e o bit e.message =~ /Can't connect to/
pode ser apenas paranoia, quase todos os outros erros de SQL deve ser pego dentro ActionController::Dispatcher
.