Mysql
 sql >> Database >  >> RDS >> Mysql

Rails:visualizza la pagina di manutenzione se non è disponibile alcuna connessione al database

Puoi creare una vista in qualunque sia il tuo controller root_path:

map.root :controller => "foo", :action => "index"

Diciamo che chiami questa vista "db_maintenance.html.erb". Nel tuo controller, procedi come segue:

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

Dal tuo punto di vista, potresti inserire qualcosa come:

<h1>Sorry for the inconvenience</h1>
blah blah blah. This happened because of:
<pre><code><%= @error %></code></pre>

Questo, ovviamente, aiuta solo se l'utente raggiunge la pagina principale del tuo sito, ma potresti facilmente estrapolare da lì. È possibile aggiungere l'azione "def db_maintenance" al controller dell'applicazione e specificare manualmente anche quale vista deve essere visualizzata. Non è perfetto, ma dovrebbe portare a termine il lavoro.