Wie kann ich die HTTP-Antwort auf eine ActiveResource-Anforderung anzeigen?

7

Ich versuche, einen ActiveResource-Aufruf zu debuggen, der nicht funktioniert.

Was ist der beste Weg, um die HTTP-Antwort auf die Anfrage von ActiveResource zu sehen?

    
Luke Francl 22.10.2008, 23:31
quelle

9 Antworten

3

Es ist einfach. Schau dir die Antwort an, die zurückkommt. :)

Zwei Optionen:

  • Sie haben die Quelldatei auf Ihrem Computer. Bearbeite es. Geben Sie puts response.inspect an der entsprechenden Stelle ein. Denken Sie daran, es zu entfernen.
  • Ruby hat offene Klassen. Finden Sie die richtige Methode und definieren Sie sie neu, um genau das zu tun, was Sie wollen, oder verwenden Sie Aliase und Aufrufverkettungen, um dies zu tun. Es gibt wahrscheinlich eine Methode, die die Antwort zurückgibt - schnappen Sie sie, drucken Sie sie und geben Sie sie dann zurück.

Hier ist ein dummes Beispiel für die letztere Option.

%Vor%

Stellen Sie sich vor, die erste Klassendefinition ist in den ActiveRecord-Quelldateien enthalten. Die zweite Klassendefinition befindet sich irgendwo in Ihrer Anwendung.

%Vor%

Sie können sehen, dass es es druckt und es dann zurückgibt. Ordentlich, nicht wahr?

(Und obwohl mein einfaches Beispiel es nicht verwendet, da es Rails nicht verwendet, überprüfen Sie alias_method_chain , um Ihre Alias-Aufrufe zu kombinieren.)

    
Ian Terrell 25.10.2008, 13:09
quelle
14

Monkey patch die Verbindung, um den Net :: HTTP-Debug-Modus zu aktivieren. Siehe Ссылка - Ich habe es geschrieben, um genau dieses Problem zu lösen. Wenn Sie dieses Attribut zu Ihrer Rails-App hinzufügen, erhalten Sie Net::HTTP.enable_debug! und Net::HTTP.disable_debug! , mit denen Sie Debug-Informationen drucken können.

Net :: HTTP Debug-Modus ist unsicher und sollte nicht in der Produktion verwendet werden, ist aber äußerst informativ für das Debugging.

    
Kai Wren 24.08.2011 12:30
quelle
4

Fügen Sie eine neue Datei zu config/initializers/ namens 'debug_connection.rb' mit dem folgenden Inhalt hinzu:

%Vor%

Dadurch wird der gesamte Netzwerkverkehr auf $ stderr gedruckt.

    
reto 07.11.2011 18:25
quelle
3

Ich mag Wireshark , weil Sie es auf dem Webbrowser-Client-Ende (normalerweise Ihrem Entwicklungscomputer) abhören und dann eine Seite erstellen können anfordern. Dann können Sie die HTTP-Pakete finden, klicken Sie mit der rechten Maustaste und "Follow Conversation", um das HTTP mit Headern zu sehen, die vor- und zurückgehen.

    
MattSmith 23.10.2008 02:58
quelle
1

Dies funktioniert nur, wenn Sie auch den Server steuern:

Folgen Sie dem Serverprotokoll und suchen Sie die URL ab, die aufgerufen wurde:

%Vor%

und dann öffnen Sie das in Firefox. Wenn der Server wirklich RESTful (dh statuslos) ist, erhalten Sie die gleiche Antwort wie ARes.

    
derfred 26.10.2008 09:20
quelle
0

Oder meine Methode, in Dinge hineinzukommen, wenn ich die genauen Interna nicht kenne, ist buchstäblich, nur eine "Debugger" -Anweisung einzuwerfen, den Server mit "script / server --debugger" zu starten und dann den Code zu durchlaufen bis ich an dem Ort bin, an dem ich will, dann beginne ein paar Inspektionen genau dort in IRB ..... das könnte helfen (hey Luke übrigens)

    
Cameron Booth 23.10.2008 02:06
quelle
0

Vielleicht ist der beste Weg, einen Traffic-Sniffer zu verwenden.

(Was völlig funktionieren würde ... außer in meinem Fall ist der Verkehr, den ich sehen möchte, verschlüsselt. D'oh!)

    
Luke Francl 22.10.2008 23:31
quelle
0

Ich würde TCPFlow hier verwenden, um den Verkehr über die Leitung zu verfolgen, anstatt meine App zu patchen um es auszugeben.

    
mistertim 26.09.2014 09:17
quelle
-1

Das Firefox-Plugin live http-Header ( Ссылка ) ist großartig dafür. Oder Sie können ein Website-Tool wie Ссылка

verwenden     
Steven 25.01.2009 17:40
quelle