Question

Lorsque j'exécute un script Ruby simple, quel est le moyen le plus simple de vider les champs d'un objet sur la console?

Je recherche quelque chose de similaire au PHP print_r() qui fonctionnera également avec les tableaux.

Était-ce utile?

La solution

éventuellement:

puts variable.inspect

Autres conseils

Vous pouvez trouver une utilisation de la méthode methods qui renvoie un tableau de méthodes pour un objet. Ce n'est pas la même chose que print_r, mais reste utile parfois.

>> "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"]

La méthode to_yaml semble être utile parfois:

$foo = {:name => "Clem", :age => 43}

puts $foo.to_yaml

retourne

--- 
:age: 43
:name: Clem

(Cela dépend-il du chargement de certains YAML modules? Ou est-ce que ce sera généralement disponible?)

p object

documentation Ruby pour p.

  

p(*args) public

     

Pour chaque objet, écrit directement obj.inspect suivi   par une nouvelle ligne sur la sortie standard du programme!

.

Si vous recherchez uniquement les variables d'instance dans l'objet, cela peut être utile:

obj.instance_variables.map do |var|
  puts [var, obj.instance_variable_get(var)].join(":")
end

ou en une couche pour le copier / coller:

obj.instance_variables.map{|var| puts [var, obj.instance_variable_get(var)].join(":")}

met foo.to_json

peut être utile car le module json est chargé par défaut

Si vous souhaitez imprimer un JSON mis en retrait déjà :

require 'json'
...
puts JSON.pretty_generate(JSON.parse(object.to_json))

Je suis tombé sur ce fil parce que je cherchais quelque chose de similaire. J'aime les réponses et ils m'ont donné quelques idées, j'ai donc testé la méthode .to_hash et j'ai très bien fonctionné pour le cas d'utilisation. soo:

object.to_hash

object.attributes_name

= > [& "; id &"; & "nom &"; & "email &"; & "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, & Quot; tom & Quot ;, & Quot; tom@tom.com & Quot ;, mar, 02 juin 2015 00:16:03 UTC +00: 00, mar, 02 Jun 2015 00:22:35 UTC +00: 00 $ 2a $ 10a $ 10a $ 10a $ 10a $ 10a $ 10a , nil, nil, nil, nil]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top