7.10 Debugging 

Ab Rails 2.0 ist wieder der Ruby-Debugger in Rails enthalten. Ein Debugger (wörtl. »Entwanzer«) hilft beim Analysieren von Fehlern (bzw. Bugs), indem man in der Applikation einen Haltepunkt (engl. Breakpoint ) setzt. Trifft die Applikation auf diesen Breakpoint, wird die Applikation angehalten, und man kann in einer Konsole u. a. die Werte der Variablen überprüfen. Mit dem sogenannten Continue -Befehl wird die Ausführung der Applikation wieder an der gleichen Stelle fortgesetzt, bis die Applikation gegebenenfalls wieder auf einen Breakpoint stößt.
Installation von ruby-debug 

Um ihn einsetzen zu können, müssen Sie das Gem-Paket ruby-debug installieren:
sudo gem install ruby-debug
Auf Windows-basierten Systemen entfällt das vorangestellte sudo.
Mac OS X-User |
Mac OS X-User müssen vor der Installation des Gem-Paketes ruby-debug die XCode-Tools von der Installations-CD installieren, da ein GCC-Compiler benötigt wird. |
Breakpoint setzen 

Um den Debugger zu nutzen, setzen Sie im Model oder Controller an der Stelle, an der Sie den Debugger nutzen wollen, den Befehl debugger ein. Im folgenden Beispiel wird der Breakpoint-Befehl in der create -Methode des People-Controllers gesetzt.
Listing app/controllers/people_controller.rb
def create
@person = Person.new(params[:person])
debugger
...
end
In diesem Beispiel haben wir den Breakpoint direkt nach dem Erzeugen des Person-Objekts eingefügt, um zu analysieren, welche Attribute das Objekt erhalten hat.
Server mit Debugger starten 

Starten Sie den Debugger gemeinsam mit dem lokalen Server mit dem Befehl ruby script/server --debugger oder ruby script/server -u.
Rufen Sie dann im Browser die Stelle Ihrer Applikation auf, an der Sie den Debugger gesetzt haben. Rufen Sie in unserem Beispiel die URL http://localhost:3000/people/new auf, geben Sie ein Beispiel ein, und klicken Sie auf die Schaltfläche »Create«.
Stehender Ladebalken
Die Ausführung der betreffenden Action wird beim Erreichen des Debugger-Befehls gestoppt. Im Safari-Browser kann man ganz gut erkennen, dass der Ladebalken in der URL stehen bleibt.
Abbildung New-Seite im Safari-Browser
Debugger-Konsole 

In dem Konsolen-Fenster, in dem Sie den Debugger gestartet haben, haben Sie jetzt vollen Zugriff auf die zur Zeit zur Verfügung stehenden Objekte.
Sie können die Objekte ausgeben (y @objekt) oder verändern (@objekt.name = "neuer_name").
In unserem Beispiel können wir z. B. die Attribute des Objekts @person anzeigen.
Listing Debugger-Konsole
(rdb:13) y @person
--- !ruby/object:Person
attributes:
name: Starbug
updated_at:
created_at:
attributes_cache:
new_record: true
nil
Praktisch ist es auch, im Controller die übergebenen Parameter params oder die Umgebungsvariablen env auszugeben.
Listing Ausgabe von params und env in der Debugger-Konsole
(rdb:15) y params
--- !map:HashWithIndifferentAccess
commit: Create
authenticity_token: f8df001e3459d25917a3bc2c5a68362e372e8a3d
action: create
controller: people
person: !map:HashWithIndifferentAccess
name: Starbug
nil
Ausführung fortsetzen 

continue
Durch Eingabe des Befehls continue in der Konsole wird der Code weiter ausgeführt.
Der continue -Befehl ist ein Befehl des Ruby-Debuggers. Mit help können Sie alle verfügbaren Befehle auflisten lassen.
Mehr Informationen zum Debugger und zu seinen Möglichkeiten finden Sie auf der Website http://www.datanoise.com/ruby-debug/ .
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.