variable que programacion objetos objeto modulos manejo lista ejemplo clases clase ruby printf-debugging

ruby - que - ¿Cómo vuelco los campos de un objeto a la consola?



que es un objeto en ruby (9)

Cuando ejecuto un script Ruby simple, ¿cuál es la forma más fácil de volcar los campos de un objeto en la consola?

Estoy buscando algo similar a print_r() PHP que también funcionará con matrices.


El método to_yaml parece ser útil a veces:

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

devoluciones

--- :age: 43 :name: Clem

(¿Esto depende de que se cargue algún módulo YAML ? ¿O eso estaría disponible normalmente?)


Me encontré con este hilo porque estaba buscando algo similar. Me gustan las respuestas y me dieron algunas ideas, así que probé el método .to_hash y también funcionó muy bien en el caso de uso. soo

object.to_hash


Posiblemente:

puts variable.inspect


Puede encontrar un uso para el método de methods que devuelve una matriz de métodos para un objeto. No es lo mismo que print_r , pero sigue siendo útil a veces.

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


Si desea imprimir un JSON ya sangrado :

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


Si está buscando solo las variables de instancia en el objeto, esto podría ser útil:

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

o como una sola línea para copiar y pegar:

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


pone foo.to_json

podría ser útil ya que el módulo json se carga por defecto


object.attributes_name

=> ["id", "name", "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, "tom", "[email protected]", mar, 02 de junio de 2015, 00:16:03 UTC +00: 00, mar, 02 de junio de 2015, 00:22:35 UTC +00: 00, " $ 2a $ 10 $ gUTr3lpHzXvCDhVvizo8Gu / MxiTrazOWmOQqJXMW8gFLvwDftF9Lm "," 2dd1829c9fb3af2a36a970acda0efe5c1d471199 ", true, nil, nil, nil nil nil