Mysql
 sql >> Base de données >  >> RDS >> Mysql

Rails :afficher la page de maintenance si aucune connexion à la base de données n'est disponible

Vous pouvez créer une vue dans n'importe quel contrôleur root_path :

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

Disons que vous appelez cette vue "db_maintenance.html.erb". Dans votre contrôleur, faites ceci :

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

À votre avis, vous pourriez mettre quelque chose comme :

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

Ceci, bien sûr, n'est utile que si l'utilisateur accède à la page principale de votre site, mais vous pouvez facilement extrapoler à partir de là. Vous pouvez ajouter l'action "def db_maintenance" au contrôleur d'application et spécifier manuellement la vue qu'il doit également afficher. Ce n'est pas parfait, mais cela devrait faire le travail.