Auf der Testseite, ein wirklich guter Weg, dies zu tun (zumindest für Entwicklungszwecke) ist die Verwendung von Passenger und die Einstellung der Schienenumgebung zur Produktion (oder Kommentar "RailsEnv Entwicklung" in der Site-Konfiguration). Zumindest können Sie so nachahmen, wie es in der Produktion funktioniert.
Aber um dies zu tun, habe ich eine Vielzahl von Einstellungsdateien, die beim Start analysiert werden und abhängig von der Umgebung abgeholt werden. Eine der Einstellungen ist, ob Fehlerseiten angezeigt werden sollen (AppSettings.show_page_errors?).Da ist in meinem Application Controller, ich habe
if !AppSettings.show_page_errors?
alias_method :rescue_action_locally, :rescue_action_in_public
end
So ist es im Allgemeinen auf die Standardeinstellungen gesetzt, aber manchmal brauche ich wirklich, um zu sehen, was genau los ist, also kann ich es auf die Produktion auszuschalten.
Der andere Schritt besteht darin, benutzerdefinierte Seiten zu verwenden. In meinem Fall habe ich Vorlagen basierend auf dem Fehler, die auch ein Formular enthalten, um an Google Formulare zu senden (da mein Server möglicherweise kaputt ist). Um dies zu erreichen, setzen diese (und nach Bedarf ändern) in der Application Controller:
def render_optional_error_file(status_code)
status = interpret_status(status_code)
render :template => "/errors/#{status.to_s[0,3]}.html.haml", :status => status, :layout => 'application.html.haml' if [404, 422, 500].include?(status)
render :template => "/errors/unknown.html.haml", :status => status, :layout => 'application.html.haml' unless [404, 422, 500].include?(status)
end
Dadurch wird die Statuscodes 404, 422 und 500 unter Verwendung der Schablone machen, aber sonst verwendet es unbekannt. Wenn Sie mit anderen umgehen müssen, müssen Sie nur diese Methode aktualisieren und die Vorlage hinzufügen.
Nicht Schienen 3 freundlich – AnApprentice
@AnApp könnte .. es ist eine alte Antwort - Sie könnten die Rails 3-Version als separate Antwort veröffentlichen. – Gishu
Was ist die Rails 3 Version? –