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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top