Tengo un hash grande con matrices y hashes anidados. Me gustaría simplemente imprimirlo para que sea 'legible' para el usuario.
Me gustaría que fuera algo así como to_yaml, eso es bastante legible, pero todavía tiene un aspecto demasiado tecnológico.
En última instancia, serán los usuarios finales los que deberán leer estos fragmentos de datos, por lo que deberán formatearse de forma limpia.
¿Alguna sugerencia?
ruby
ruby-on-rails-3
Adam O'Connor
fuente
fuente
Respuestas:
Úselo
pp
si necesita una solución integrada y solo quiere saltos de línea razonables.Usa awesome_print si puedes instalar una gema. (Dependiendo de sus usuarios, es posible que desee utilizar la
index:false
opción para desactivar la visualización de índices de matriz).fuente
Si tiene JSON, lo recomiendo
JSON.pretty_generate(hash)
porque es más simple que awesome_print , se ve muy bien en unapre
etiqueta y permite copiarlo fácilmente desde una página web. (Consulte también: ¿Cómo puedo formatear "bastante" mi salida JSON en Ruby on Rails? )fuente
puts JSON.pretty_generate(hash)
Otra solución que funciona mejor para mí que
pp
oawesome_print
:fuente
Pry::ColorPrinter.pp(obj)
escribe en estándar pero puede tomar parámetros adicionales, incluido el destino. Me gustaPry::ColorPrinter.pp(obj, a_logger)
Si no tiene ninguna acción de gema elegante, pero sí tiene JSON, esta línea CLI funcionará en un hash:
puts JSON.pretty_generate(my_hash).gsub(":", " =>")
fuente
Use las respuestas anteriores si está imprimiendo a los usuarios.
Si solo desea imprimirlo usted mismo en la consola, le sugiero que use la gema de palanca en lugar de irb. Además de la impresión bonita, la palanca también tiene muchas otras características (consulte railscast a continuación)
Y mira este railscast:
http://railscasts.com/episodes/280-pry-with-rails
fuente
Fácil de hacer con json si confías en que tus claves estén sanas:
fuente
Usando Pry solo necesita agregar el siguiente código a su ~ / .pryrc:
fuente
De todas las gemas que probé, la
show_data
gema funcionó mejor para mí, ahora la uso ampliamente para registrar hash de params en Rails casi todo el tiempofuente
Para hashes anidados grandes, este script podría ser útil para usted. Imprime un hash anidado en una bonita sintaxis de python / like con solo sangrías para que sea fácil de copiar.
Ejemplo de uso:
El valor devuelto es el recuento (3) de todos los valores de nivel final del hash anidado.
fuente
Aquí hay otro enfoque usando json y rouge:
(analiza la respuesta de, p
RestClient
. ej. )fuente
En rieles
Si necesitas
inspect
en los objetos en el hashinspect
método en sus objetos como se supone que debe... entonces esto funciona muy bien! (Y mejora, cuanto más grande y más anidado esté su objeto Hash).
Por ejemplo:
pretty_inspect
proviene de PrettyPrint , que incluye los rieles de forma predeterminada. Por lo tanto, no se necesitan gemas ni se necesita conversión a JSON.No en rieles
Si no está en Rails o si lo anterior falla por alguna razón, intente usar
require "pp"
primero. Por ejemplo:Un ejemplo completo
Gran
pretty_inspect
ejemplo de Hash de mi proyecto con texto específico del proyecto de mis objetos inspeccionados redactados:fuente
Bajo Rails, las matrices y los hashes en Ruby tienen funciones incorporadas en to_json. Usaría JSON solo porque es muy legible dentro de un navegador web, por ejemplo, Google Chrome.
Dicho esto, si le preocupa que parezca demasiado "técnico", probablemente debería escribir su propia función que reemplace las llaves y las llaves en sus hashes y matrices con espacios en blanco y otros caracteres.
Busque la función gsub para una muy buena manera de hacerlo. Sigue jugando con diferentes personajes y diferentes cantidades de espacios en blanco hasta que encuentres algo que parezca atractivo. http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub
fuente
{"programming_language":{"ruby":{},"python":{}}}