J'ai un grand hachage avec des tableaux imbriqués et des hachages. Je voudrais simplement l'imprimer pour qu'il soit «lisible» pour l'utilisateur.
J'aimerais que ce soit un peu comme to_yaml - c'est assez lisible - mais toujours trop technologique.
En fin de compte, ce sont les utilisateurs finaux qui ont besoin de lire ces blocs de données afin qu'ils doivent être formatés proprement.
Aucune suggestion?
ruby
ruby-on-rails-3
Adam O'Connor
la source
la source
Réponses:
À utiliser
pp
si vous avez besoin d'une solution intégrée et souhaitez simplement des sauts de ligne raisonnables.Utilisez awesome_print si vous pouvez installer une gemme. (En fonction de vos utilisateurs, vous souhaiterez peut-être utiliser l'
index:false
option pour désactiver l'affichage des indices de tableau.)la source
Si vous avez JSON, je le recommande
JSON.pretty_generate(hash)
car il est plus simple que awesome_print , a fière allure dans unepre
balise et permet une copie facile à partir d'une page Web. (Voir aussi: Comment puis-je formater "joli" ma sortie JSON dans Ruby on Rails? )la source
puts JSON.pretty_generate(hash)
Une autre solution qui fonctionne mieux pour moi que
pp
ouawesome_print
:la source
Pry::ColorPrinter.pp(obj)
écrit en sortie standard mais peut prendre des paramètres supplémentaires, y compris la destination. J'aimePry::ColorPrinter.pp(obj, a_logger)
Si vous n'avez aucune action de gemme sophistiquée, mais que vous avez JSON, cette ligne CLI fonctionnera sur un hachage:
puts JSON.pretty_generate(my_hash).gsub(":", " =>")
la source
Utilisez les réponses ci-dessus si vous imprimez aux utilisateurs.
Si vous souhaitez uniquement l'imprimer pour vous-même dans la console, je vous suggère d'utiliser le pry gem au lieu d'irb. Outre la jolie impression, pry possède également de nombreuses autres fonctionnalités (vérifiez le railcast ci-dessous)
Et vérifiez ce railscast:
http://railscasts.com/episodes/280-pry-with-rails
la source
Facile à faire avec json si vous pensez que vos clés sont saines:
la source
En utilisant Pry, il vous suffit d'ajouter le code suivant à votre ~ / .pryrc:
la source
De toutes les gemmes que j'ai essayées, la
show_data
gemme a fonctionné le mieux pour moi, je l'utilise maintenant beaucoup pour enregistrer le hachage des paramètres dans Rails à peu près tout le tempsla source
Pour les hachages imbriqués volumineux, ce script peut vous être utile. Il imprime un hachage imbriqué dans une belle syntaxe de type python avec seulement des retraits pour faciliter la copie.
Exemple d'utilisation:
La valeur renvoyée est le nombre (3) de toutes les valeurs de niveau final du hachage imbriqué.
la source
Voici une autre approche utilisant json et rouge:
(analyse la réponse de par exemple
RestClient
)la source
Dans les rails
Si tu as besoin
inspect
sur les objets dans le hachageinspect
méthode dans vos objets comme vous êtes censé le faire... alors cela fonctionne très bien! (Et de mieux en mieux, plus votre objet Hash est gros et imbriqué.)
Par exemple:
pretty_inspect
vient de PrettyPrint , que les rails incluent par défaut. Donc, pas de gemmes nécessaires et aucune conversion en JSON nécessaire.Pas dans les rails
Si vous n'êtes pas dans Rails ou si ce qui précède échoue pour une raison quelconque, essayez d'
require "pp"
abord d' utiliser . Par exemple:Un exemple complet
Grand
pretty_inspect
exemple de hachage de mon projet avec texte spécifique au projet de mes objets inspectés rédigés:la source
Sous Rails, les tableaux et les hachages dans Ruby ont des fonctions to_json intégrées. J'utiliserais JSON simplement parce qu'il est très lisible dans un navigateur Web, par exemple Google Chrome.
Cela étant dit, si vous êtes préoccupé par le fait que cela semble trop "technique", vous devriez probablement écrire votre propre fonction qui remplace les accolades et les accolades carrées dans vos hachages et tableaux par des espaces blancs et d'autres caractères.
Recherchez la fonction gsub pour une très bonne façon de le faire. Continuez à jouer avec différents personnages et différentes quantités d'espaces jusqu'à ce que vous trouviez quelque chose qui semble attrayant. http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub
la source
{"programming_language":{"ruby":{},"python":{}}}