Wie Dump ich ein Feld des Objekts auf die Konsole?
-
21-08-2019 - |
Frage
Wenn ich ein einfaches Ruby-Skript renne, was ist der einfachste Weg, ein Objekt der Felder auf der Konsole auszugeben?
Ich suche nach etwas ähnliches wie PHP print_r()
, die auch mit Arrays arbeiten.
Lösung
Möglicherweise:
puts variable.inspect
Andere Tipps
Sie können eine Anwendung für die methods
Methode finden, die eine Reihe von Methoden für ein Objekt zurückgibt. Es ist nicht die gleiche wie print_r
, aber immer noch nützlich zu Zeiten.
>> "Hello".methods.sort
=> ["%", "*", "+", "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", "[]", "[]=", "__id__", "__send__", "all?", "any?", "between?", "capitalize", "capitalize!", "casecmp", "center", "chomp", "chomp!", "chop", "chop!", "class", "clone", "collect", "concat", "count", "crypt", "delete", "delete!", "detect", "display", "downcase", "downcase!", "dump", "dup", "each", "each_byte", "each_line", "each_with_index", "empty?", "entries", "eql?", "equal?", "extend", "find", "find_all", "freeze", "frozen?", "grep", "gsub", "gsub!", "hash", "hex", "id", "include?", "index", "inject", "insert", "inspect", "instance_eval", "instance_of?", "instance_variable_defined?", "instance_variable_get", "instance_variable_set", "instance_variables", "intern", "is_a?", "is_binary_data?", "is_complex_yaml?", "kind_of?", "length", "ljust", "lstrip", "lstrip!", "map", "match", "max", "member?", "method", "methods", "min", "next", "next!", "nil?", "object_id", "oct", "partition", "private_methods", "protected_methods", "public_methods", "reject", "replace", "respond_to?", "reverse", "reverse!", "rindex", "rjust", "rstrip", "rstrip!", "scan", "select", "send", "singleton_methods", "size", "slice", "slice!", "sort", "sort_by", "split", "squeeze", "squeeze!", "strip", "strip!", "sub", "sub!", "succ", "succ!", "sum", "swapcase", "swapcase!", "taguri", "taguri=", "taint", "tainted?", "to_a", "to_f", "to_i", "to_s", "to_str", "to_sym", "to_yaml", "to_yaml_properties", "to_yaml_style", "tr", "tr!", "tr_s", "tr_s!", "type", "unpack", "untaint", "upcase", "upcase!", "upto", "zip"]
Die to_yaml
Methode scheint manchmal nützlich zu sein:
$foo = {:name => "Clem", :age => 43}
puts $foo.to_yaml
Rückkehr
---
:age: 43
:name: Clem
(Hängt dies auf einigen YAML
Modul geladen werden? Oder wäre die normalerweise zur Verfügung?)
p object
Für jedes Objekt schreibt direkt obj.inspect gefolgt durch eine neue Zeile in die Standardausgabe des Programms.
Wenn Sie sich nur für die Instanzvariablen in dem Objekt suchen, könnte dies nützlich sein:
obj.instance_variables.map do |var|
puts [var, obj.instance_variable_get(var)].join(":")
end
oder als Einzeiler für das Kopieren und Einfügen:
obj.instance_variables.map{|var| puts [var, obj.instance_variable_get(var)].join(":")}
setzt foo.to_json
könnte sich als nützlich erweisen, da die json-Modul ist standardmäßig geladen
Wenn Sie ein bereits drucken gegliederte JSON :
require 'json'
...
puts JSON.pretty_generate(JSON.parse(object.to_json))
Ich kam in diesem Thread, weil ich für etwas ähnliches suchte. Ich mag die Antworten und sie gaben mir ein paar Ideen, damit ich die .to_hash Methode getestet und funktionierte wirklich gut für den zu Anwendungsfall. soo:
object.to_hash
object.attributes_name
=> [ "id", "name", "E-Mail", "created_at", "updated_at", "password_digest", "remember_token", "admin", "marketing_permissions", "terms_and_conditions", "disable", "black_list", "zero_cost", "password_reset_token", "password_reset_sent_at"]
object.attributes.values
=> [1, "tom", "tom@tom.com", Di, 2. Juni 2015 00.16.03 UTC +00: 00, Di, 2. Juni 2015 00.22.35 UTC +00: 00, "2a $ 10 $ $ gUTr3lpHzXvCDhVvizo8Gu / MxiTrazOWmOQqJXMW8gFLvwDftF9Lm", "2dd1829c9fb3af2a36a970acda0efe5c1d471199", true, null, null, null, null, null, null, null]