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)?

War es hilfreich?

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.

  1. Add hebeln-moves Gemfile: gem 'pry-moves'
  2. Einfügen binding.pry, wo Sie wollen aufhören
  3. 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top