Ich möchte eine Ausnahme auslösen, damit sie das Gleiche tut wie eine normale Rails-Ausnahme. Zeigen Sie insbesondere die Ausnahme und den Stack-Trace im Entwicklungsmodus an und zeigen Sie im Produktionsmodus die Seite "Es tut uns leid, aber etwas ist schief gelaufen".
Ich habe folgendes versucht:
raise "safety_care group missing!" if group.nil?
Aber es schreibt einfach "ERROR signing up, group missing!"
in die Datei development.log
ruby-on-rails
exception
exception-handling
Chirag Patel
quelle
quelle
Antworten:
Sie müssen nichts Besonderes tun, es sollte einfach funktionieren.
Wenn ich eine neue Rails-App mit diesem Controller habe:
und geh zu
http://127.0.0.1:3000/foo/
Ich sehe die Ausnahme mit einem Stack-Trace.
Möglicherweise wird nicht die gesamte Stapelverfolgung im Konsolenprotokoll angezeigt, da Rails (seit 2.3) Zeilen aus der Stapelverfolgung filtert, die vom Framework selbst stammen.
Siehe
config/initializers/backtrace_silencers.rb
in Ihrem Rails-Projektquelle
Sie können es so machen:
Was Sie hier tun, ist das Erstellen einer Klasse "NotActivated", die als Ausnahme dient. Mit Raise können Sie "NotActivated" als Ausnahme auslösen. Rescue_from ist die Methode zum Abfangen einer Ausnahme mit einer angegebenen Methode (in diesem Fall nicht aktiviert). Ein ziemlich langes Beispiel, aber es sollte Ihnen zeigen, wie es funktioniert.
Beste Grüße,
Fabian
quelle
Wenn Sie einen einfacheren Weg benötigen und nicht viel Aufhebens machen möchten, könnte eine einfache Ausführung sein:
Dies wird eine Ausnahme auslösen, beispielsweise
e
mite.message = something bad happened!
und dann können Sie es retten, während Sie alle anderen Ausnahmen im Allgemeinen retten.
quelle