¿Manejar automáticamente la conexión de base de datos que falta en ActiveRecord?
-
06-07-2019 - |
Pregunta
Con el lanzamiento de Amazon Servicio de base de datos relacional hoy y sus ventanas de mantenimiento 'forzadas' me pregunté si alguien tiene alguna solución para manejar una conexión de base de datos faltante en Rails.
Idealmente, me gustaría poder presentar automáticamente una página de mantenimiento a los visitantes si la conexión de la base de datos desaparece (es decir, Amazon está haciendo su mantenimiento). ¿Alguien ha hecho algo así?
Saludos Arfon
Solución
Puede hacer esto con un 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, puede personalizar el mensaje de error, y el bit e.message = ~ / Can't connect to /
puede ser solo paranoia, casi todos los demás errores SQL deberían quedar atrapados dentro de ActionController :: Dispatcher
.