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

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top