Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Rails:Wartungsseite anzeigen, wenn keine Datenbankverbindung verfügbar ist

Sie könnten eine Ansicht in Ihrem root_path-Controller erstellen:

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

Nehmen wir an, Sie nennen diese Ansicht "db_maintenance.html.erb". Gehen Sie in Ihrem Controller wie folgt vor:

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

Ihrer Meinung nach könnten Sie so etwas schreiben wie:

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

Dies hilft natürlich nur, wenn der Benutzer auf die Hauptseite Ihrer Website gelangt, aber Sie könnten von dort aus leicht extrapolieren. Sie könnten dem Anwendungscontroller die Aktion "def db_maintenance" hinzufügen und manuell angeben, welche Ansicht er auch rendern soll. Es ist nicht perfekt, aber es sollte die Arbeit erledigen.