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?
Es ist einfach. Schau dir die Antwort an, die zurückkommt. :)
Zwei Optionen:
puts response.inspect
an der entsprechenden Stelle ein. Denken Sie daran, es zu entfernen. 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.)
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.
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.
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.
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)
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!)
Tags und Links ruby ruby-on-rails activeresource