2010-09-14 8 views
6

Gibt es ein guter Weg, um ein Skript und sehen Sie alle Schritte ausgeführt werden:Verfolgen Sie den Code in Ruby?

  • Welche Code ausgeführt wird
  • dem der Code ist in
  • Was es gibt
  • Die Fehlermeldungen
  • Datei

Dies wäre eine gute Möglichkeit zu lernen, wie ein Open-Source-Projekt funktioniert.

Gibt es keine Lösungen wie diese für Ruby?

Eg.

require "httparty" 
HTTParty.get "http://www.google.se" 

Dann würde es den Code ausführen und zeigen Sie mir den gesamten Code es ausgeführt wird, in welcher Datei und Linie, Objekte zurückgegeben, Fehlermeldungen usw.

Antwort

5

Tracer könnte es für Sie tun http://en.wikibooks.org/wiki/Ruby_Programming/Standard_Library/Tracer

wenn Sie nur angehoben Ausnahmen sehen wollen, dann führen Rubin -d (oder verwenden Sie ruby-debug und "Catch" Exception)

+0

Ich benutze Ruby 1.9.2. Warum gibt es keinen -tracer Schalter wenn ich "ruby --help" starte. Und wenn ich "ruby -tracer my_ruby_file.rb" starte, wird es wie gewohnt ausgedruckt, ich sehe keine Tracing-Funktionalität. –

+0

@never_had_a_name, es ist nicht in '--help', denn was * dokumentiert * ist, ist '-rlibrary'; 'Tracer' ist zufällig eine der verfügbaren Bibliotheken. Das Dokumentieren jeder verfügbaren Bibliothek wäre eine endlose Aufgabe. (Jede eingebaute Bibliothek kann auf diese Weise weniger geladen werden, aber das unterscheidet sich immer noch von der Verwendung der Befehlszeile). –

0

einen Debugger verwenden? ruby kommt mit einem eingebauten oder verwenden Sie ruby-debug

+0

Hat ein Debugger wie Rubin- debuggen was ich brauche? Bitte lies meinen aktualisierten Beitrag. –

+1

Dies ist wirklich ein Kommentar, keine Antwort auf die Frage. Bitte benutzen Sie "Kommentar hinzufügen" um ein Feedback für den Autor zu hinterlassen. –

+0

@RostyslavDzinko Ich stimme nicht zu. – horseyguy

0

Sie können eine Ausnahme auslösen, fangen Sie es und verwenden Sie dann die Methode zurückverfolgen eines Ausnahmeobjekts.

+0

Ich bin nicht der Typ, der die Bibliothek codiert hat. Lesen Sie meinen aktualisierten Beitrag –

2

Es gibt Kernel#set_trace_func die meist bedeckt, was Sie benötigen:

proc nimmt bis zu sechs Parameter auf: ein Ereignisnamen, Dateinamen, eine Zeilennummer, eine Objekt-ID, eine Bindung, und der Name einer Klasse. proc wird aufgerufen, wenn ein Ereignis auftritt.

Ich bin mir nicht sicher, was meinst du mit "die Fehlermeldungen". Wenn Sie auf Ausnahmen verweisen, wenn Sie sie in Ihrem Code nicht behandeln, wird der Code mit der gedruckten Ausnahme beendet.

+0

Lesen Sie meinen aktualisierten Beitrag –