2012-05-04 5 views
5

Ich habe eine Ansicht new.html.erb mit dem folgenden Code genannt:Rails voller Fehlerseite zeigt, die nicht für die Ansicht Fehler

<%= some_non_existent_thing.imaginary_method %> 

Nun, ich sehe nur eine einfache 500-Fehlerseite, wie folgt aus:

500 Internal Server Error
Wenn Sie der Administrator dieser Website sind, dann lesen Sie bitte die Protokolldatei des Web-Anwendung und/oder der Protokolldatei des Web-Servers, um herauszufinden, was schief gelaufen ist.

Sollte ich nicht eine ziemlich formatierte Seite mit einigen Informationen über die Ausnahme sehen?

Ich bin mir nicht sicher, ob ich hier etwas vermissen, aber ich glaube, Schienen verwendet, um die volle Fehlerseite in Entwicklungsumgebung zu zeigen, wenn es etwas falsch in der Ansicht ist.

+3

Also, das ist in deiner Dev-Box oder an Orten wie Heroku passiert? –

+0

Was ist in den Protokollen? – gabrielhilal

Antwort

5

Ist

Dies ist der Protokollformatierer war ich vor der Verwendung wurde, die die Fehler verursacht [Ich hatte es zu einer Initialisierer-Datei hinzugefügt] Sind Sie sicher, dass Sie die Entwicklungsumgebung betreiben? Überprüfen Sie, ob RAILS_ENV=development oder rails server -e development ausgeführt wird.

dann Ihre development.rb Datei überprüfen, sollten Sie die folgende Zeile in ihm haben

config.consider_all_requests_local = true 
0

Zuerst wird, wie Anton unten in der Antwort erwähnt, bestätigt, dass Ihre config/environments/development.rb hat:

config.consider_all_requests_local = true 

und dass Sie den Server im Entwicklungsmodus ausgeführt werden.

Ich hatte das oben genannte sichergestellt und trotzdem den Fehler beobachtet. Dies passierte in meinem Fall, weil mein Logger einige Fehler hatte. Ich verwendete einen benutzerdefinierten Protokollformatierer, der die String#%-Methode verwendete, um das Protokoll zu formatieren. % scheint sehr fehlerhaft zu sein und führt zu all diesen seltsamen Fehlern. Ich dachte mir das aus, indem ich eine debugger Zeile zu der Controller-Methode hinzufügte und in den impliziten Renderfunktionsaufruf schritt. Es traf den Fehler und meldete es als malformed format string Fehler.

class Logger::SimpleFormatter 
    def call(severity, time, progname, msg) 
    "%-7s #{msg}\n" % severity 
    end 
end 

Diese Modifikationen waren den Fehler:

class Logger::SimpleFormatter 
    def call(severity, time, progname, msg) 
    severity_prefix = "[#{severity}]".ljust(7) 
    "#{severity_prefix} #{msg}\n" 
    end 
end 
0

Dies geschieht, wenn der Code nicht übersetzbar ist, zum Beispiel, wenn Sie eine if-Anweisung fehlt ein Ende haben.

+0

In Entwicklung sollte es die Ausnahme und nicht die 500 Fehlerseite zeigen. – felipero

Verwandte Themen