wie man Fehler wie 404/500 in rails3 behandelt

7

Hey, ich hoffe du kannst mir helfen.

Ich versuche eine Möglichkeit zu finden, den Benutzer auf die Standardfehlerseiten 404.html und 500.html in meinem Öffentlichen Ordner zu verweisen.

Wenn also ein Routing- oder ein Nomethod-Fehler vorliegt, sollte er dorthin geleitet werden. Ich habe bereits einige Sachen in meinem Anwendungscontroller ausprobiert, aber es hat nicht funktioniert.

Vielen Dank !!

    
daniel 09.01.2011, 17:05
quelle

3 Antworten

19

Rails erledigt dies automatisch für Sie, wenn es im Produktionsmodus läuft. Wenn Sie Ihre Anwendung auf einen Live-Server hochladen, kümmert sich Rails darum, diese Ausnahmen zu behandeln und die korrekten Fehlerseiten mit dem korrekten Header-Status zu rendern. Wenn Sie versuchen zu sehen, wie diese Seiten aussehen (zum Testen oder etwas), greifen Sie einfach direkt auf sie über http://localhost:3000/404.html

zu

Immer wenn Sie Ihre Rails-Anwendung auf einem Live-Server einrichten (lassen Sie uns Apache als Beispiel verwenden), geben Sie das Site-Root-Verzeichnis als /public -Ordner in Ihrer Anwendung an. Immer dann, wenn eine Anfrage an diese Serveradresse gestellt wird, sucht Apache zuerst in diesem öffentlichen Ordner und versucht, ein statisches Asset zu liefern (dies ist eine konfigurierbare Option in [environment].rb ). Wenn die angeforderte Seite nicht gefunden werden kann, wird die Anforderung über den Ruby-Stack weitergeleitet.

Wenn Rails im Produktionsmodus auf einen Fehler stößt, der nicht behandelt wird (z. B. begin, rescue), wird der Fehler den ganzen Weg bis zum Stack geworfen, was Apache (in meinem Beispiel wiederum) auffordert zu rendern ein entsprechender Fehler.

Hier sind einige häufige Fehler, die Sie im Entwicklungsmodus sehen und was sie im Produktionsmodus rendern:

%Vor%     
sethvargo 09.01.2011, 17:07
quelle
2

Wird automatisch im Produktionsmodus ausgeführt - Sie müssen das nicht manuell tun.

    
Marcel Jackwerth 09.01.2011 17:08
quelle
2

Sehen Sie sich diesen Post an Umleiten Sie alle Anfragen, die einen Routing-Fehler verursachen.

    
Dogbert 09.01.2011 17:08
quelle