Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Rails:Exibir página de manutenção se nenhuma conexão de banco de dados estiver disponível


Você pode criar uma visão em qualquer que seja o seu controlador root_path:
map.root :controller => "foo", :action => "index"

Digamos que você chame essa visualização de "db_maintenance.html.erb". No seu controlador, faça isso:
def index
  begin
    @widgets = Widget.find(:all)
  rescue Exception => e
    # This will only happen if DB stuff fails
    redirect_to :action => "db_maintenance", :error => e.message
  end
end

...

def db_maintenance
  @error = params[:error] # You might want to do something with this here or in the view
  # renders the app/views/foo/db_maintenance.html.erb view
end

Na sua opinião, você poderia colocar algo como:
<h1>Sorry for the inconvenience</h1>
blah blah blah. This happened because of:
<pre><code><%= @error %></code></pre>

Isso, claro, só ajuda se o usuário acessar a página principal do seu site, mas você pode facilmente extrapolar a partir daí. Você pode adicionar a ação "def db_maintenance" ao controlador de aplicativo e especificar manualmente qual visualização ela deve renderizar também. Não é perfeito, mas deve dar conta do recado.