Was ist der einfachste Weg, um die Felder eines Objekts auf der Konsole abzulegen, wenn ich ein einfaches Ruby-Skript ausführe?
Ich suche etwas Ähnliches wie PHPs, print_r()
das auch mit Arrays funktioniert.
ruby
printf-debugging
roryf
quelle
quelle
inspect
Methode zu Ihrer Klasse können Sie definieren, wie die Attribute der Klasse angezeigt werden, anstatt sich auf die Standardausgabe zu verlassen. Viele Klassen implementieren es nicht gut, aber es kann beim Debuggen sehr nützlich sein. Rubyto_s
greift zurück, wenn es keine Inspektionsmethode findet.server = TCPServer.new 0 ; puts server.inspect #<TCPServer:fd 9> => nil
. Es funktioniert nicht für die meisten komplexen Objekte.var_dump
Äquivalent in Ruby gefunden wurde, fand ich, dasspp
dies in diesem Fall sehr nützlich ist. Schauen Sie hier - stackoverflow.com/questions/6501506/ruby-inspect-readability/…p object
ein Alias fürputs object.inspect
Möglicherweise finden Sie eine Verwendung für die
methods
Methode, die ein Array von Methoden für ein Objekt zurückgibt. Es ist nicht dasselbe wieprint_r
, aber manchmal immer noch nützlich.quelle
instance_methods
von der fraglichen Klasse zu subtrahieren , um die einzigartigen Methoden zu erhalten:(String.instance_methods - Object.instance_methods).sort
.methods.sort
ist sehr nützlich. Gibt es eine "intelligente" Möglichkeit, Methoden, die (vage) für dieses bestimmte Objekt einzigartig sind, schnell anzuzeigen? ZB taucht eine Methode wie diese.to_s
häufig auf, so dass sie nicht allzu nützlich ist. In einigen Fällen kann es jedoch sehr praktisch sein, bestimmte Methoden für bestimmte Objekte zu kennen. Besonders in Fällen, die nicht offensichtlich sind. Gibt es eine Möglichkeit, diese schnell zu bekommen? (In diesem Fall habe ich einPG::Result
Objekt und möchte schnell die wahrscheinlichen Methoden einschätzen, die ich möglicherweise nützlich finden könnte.Die
to_yaml
Methode scheint manchmal nützlich zu sein:kehrt zurück
(Hängt dies davon ab,
YAML
ob ein Modul geladen wird? Oder ist das normalerweise verfügbar?)quelle
to_yaml
das YAML-Modell muss geladen sein. Es ist jedoch Teil der Ruby-Standardbibliothek.Ruby doc für
p
.quelle
Wenn Sie nur nach den Instanzvariablen im Objekt suchen, kann dies hilfreich sein:
oder als Einzeiler zum Kopieren und Einfügen:
quelle
setzt foo.to_json
Dies kann nützlich sein, da das JSON-Modul standardmäßig geladen ist
quelle
to_json
wird in 1.8.7 oder 1.9.2 nicht standardmäßig geladen.Wenn Sie einen bereits eingerückten JSON drucken möchten :
quelle
Ich bin auf diesen Thread gestoßen, weil ich nach etwas Ähnlichem gesucht habe. Ich mag die Antworten und sie gaben mir einige Ideen, also habe ich die .to_hash-Methode getestet und auch für den Anwendungsfall sehr gut funktioniert. soo:
object.to_hash
quelle
quelle
undefined method 'attributes' for ...
object.attributes_name
hat nicht funktioniert,object.attributes
funktioniert aber , um einen schönen Hash von Schlüsseln und Werten zu erhalten. Das hat mir geholfen, danke!