Wie der Wert einer Reglergröße während der Ausführung in Ruby on Rails bestimmen?
-
09-06-2019 - |
Frage
Was ist der beste Weg für mich, einen Controller Variablenwert während der Ausführung zu bestimmen?
Zum Beispiel ist es eine Möglichkeit, eine Pause in dem Code einfügen, und bewirken, dass der Wert der Variablen auf den Bildschirm ausgegeben werden (oder das Protokoll)?
Lösung
Ja. Der einfachste Weg ist es, den Wert als String zu erhöhen. Wie so: raise @foo.to_s
Alternativ können Sie den Debugger (gem install ruby-debug
) installieren und anschließend den Entwicklungsserver mit der --debugger
Flagge starten. Dann in Ihrem Code, rufen Sie den Befehl debugger
.
Im Inneren der Debugger-Eingabeaufforderung, haben Sie viele Befehle, einschließlich p
den Wert einer Variablen zu drucken.
Update: ist hier ein bisschen mehr über ruby-debug .
Andere Tipps
Wenn Sie einen Controller-Instanz Variable mit dem Namen @foo
haben, dann in Ihrem Controller können Sie einfach so etwas wie:
logger.debug "@foo is: #{@foo}"
Darüber hinaus können Sie Ausgabe der Wert Ihrer Ansicht Vorlage:
<%= debug @foo %>
Ich ziehe es mit der Methode untersuchen etwa so:
raise @foo.inspect
Es hat mehr Informationen als to_s, wie die Attributwerte.
Zusammenfassung von Jordi Bunster, John Topley und Jaryl:
ich. Schnelle und schmutzige Art und Weise:
raise @foo.inspect
in der Steuerung. Oder
<% raise @foo.inspect %>
in der Ansicht.
II. Proper-Protokollierung Sie development.log
:
logger.debug "@foo == #{@foo.inspect}"
III. Vollwertige Debuggen :
Installieren Sie den Debugger (gem install ruby-debug
) und dann auf den Entwicklungs-Server mit der --debugger
Flagge starten. Dann in Ihrem Code, rufen Sie den Befehl debugger
.
Im Inneren der Debugger-Eingabeaufforderung, haben Sie viele Befehle, einschließlich p
den Wert einer Variablen zu drucken.
eine Ausnahme Anhebung ist der schnellste Weg, wenn Sie nur auf einem Wert suchen müssen, aber es ist die Zeit wert, zu lernen, wie man den Debugger richtig zu verwenden. Es ist selten, dass Sie würden nur gerade der Wert einer Variablen sehen müssen, Sie wahrscheinlich einen Fehler im Code zu finden versuchen, und das ist, was ein Debugger für ist.
Das Senden der Daten zur Entwicklung Protokoll ist langsamer als eine der beiden anderen Optionen hier so weit, wenn Sie lernen, wie man den Debugger verwenden (die durch Protokolldateien lesen will). Verwenden Sie den Logger für die Produktion, Sie gehen zu wollen, um zu sehen, was der Wert war, wenn jemand Sie oben ruft und sagt alles kaputt ist.
Nun, ich in der Regel bevorzugen die Standard-Fehlerausgabe
$ stderr.print ( "was auch immer")
Es ist einfach und macht den Job.
- Add hebeln-moves Gemfile:
gem 'pry-moves'
- Einfügen
binding.pry
, wo Sie wollen aufhören - Geben Sie Variablennamen zu sehen sein Wert
Dann weiter durch c
eingeben, bewegen sich mit n
zur nächsten Zeile oder führen andere Debug-Aktionen, bis Sie das Problem beheben werden.