Cuando estoy ejecutando 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 PHP print_r()que también funcione con matrices.
ruby
printf-debugging
roryf
fuente
fuente

inspectmétodo a su clase le permite definir cómo se muestran los atributos de la clase, en lugar de confiar en la salida predeterminada. Muchas clases no lo implementan bien, pero puede ser realmente útil al depurar. Ruby recurrirá ato_ssi no puede encontrar un método de inspección.server = TCPServer.new 0 ; puts server.inspect #<TCPServer:fd 9> => nil. no funcionará para la mayoría de los objetos complejos.var_dumpequivalente de php en ruby, encontré queppes muy útil en ese caso, mira aquí - stackoverflow.com/questions/6501506/ruby-inspect-readability/…p objectes un alias paraputs object.inspectPuede encontrar un uso para el
methodsmétodo que devuelve una matriz de métodos para un objeto. No es lo mismoprint_r, pero sigue siendo útil a veces.fuente
instance_methodsde la clase 'en cuestión para obtener los métodos que son únicos:(String.instance_methods - Object.instance_methods).sort.methods.sortes muy útil. ¿Hay alguna forma 'inteligente' de mostrar rápidamente métodos que sean (vagamente) únicos para ese objeto en particular? Por ejemplo, un método como.to_spuede aparecer a menudo, por lo que no es tan útil, pero algunos podrían ser muy útiles para conocer ciertos métodos para ciertos objetos. Especialmente en casos que no son obvios. ¿Hay alguna forma de obtenerlos rápidamente? (en este caso, tengo unPG::Resultobjeto y quiero evaluar rápidamente los métodos probables que podría encontrar útiles.El
to_yamlmétodo parece ser útil a veces:devoluciones
(¿Depende de que
YAMLse esté cargando algún módulo? ¿O estaría normalmente disponible?)fuente
to_yamlrequiere que se cargue el modelo YAML. Sin embargo, es parte de la biblioteca estándar de Ruby.Ruby doc
p.fuente
Si está buscando solo las variables de instancia en el objeto, esto podría ser útil:
o como una sola línea para copiar y pegar:
fuente
pone foo.to_json
puede ser útil ya que el módulo json se carga por defecto
fuente
to_jsonno se carga por defecto en 1.8.7 o 1.9.2.Si desea imprimir un JSON ya sangrado :
fuente
Encontré 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 para el caso de uso. soo:
object.to_hashfuente
fuente
undefined method 'attributes' for ...object.attributes_nameno funcionó, pero loobject.attributeshace para obtener un buen hash de claves y valores. Esto me ayudó, gracias!