Ich habe einen großen Hash mit verschachtelten Arrays und Hashes. Ich möchte es einfach ausdrucken, damit es für den Benutzer "lesbar" ist.
Ich möchte, dass es so etwas wie to_yaml ist - das ist ziemlich lesbar - aber immer noch zu technisch.
Letztendlich werden es Endbenutzer sein, die diese Datenblöcke lesen müssen, damit sie sauber formatiert werden müssen.
Irgendwelche Vorschläge?
ruby
ruby-on-rails-3
Adam O'Connor
quelle
quelle
Antworten:
Verwenden
pp
Sie diese Option, wenn Sie eine integrierte Lösung benötigen und nur angemessene Zeilenumbrüche wünschen.Verwenden Sie awesome_print, wenn Sie einen Edelstein installieren können. (Abhängig von Ihren Benutzern möchten Sie möglicherweise die
index:false
Option zum Deaktivieren der Anzeige von Array-Indizes verwenden.)quelle
Wenn Sie JSON haben, empfehle ich,
JSON.pretty_generate(hash)
weil es einfacher als awesome_print ist , in einempre
Tag gut aussieht und das einfache Kopieren von einer Webseite ermöglicht. (Siehe auch: Wie kann ich meine JSON-Ausgabe in Ruby on Rails "hübsch" formatieren? )quelle
puts JSON.pretty_generate(hash)
Eine andere Lösung, die für mich besser funktioniert als
pp
oderawesome_print
:quelle
Pry::ColorPrinter.pp(obj)
Schreiben in den Standardausgang erfolgt, jedoch zusätzliche Parameter, einschließlich des Ziels, erforderlich sind. GefälltPry::ColorPrinter.pp(obj, a_logger)
Wenn Sie keine ausgefallene Edelsteinaktion haben, aber JSON haben, funktioniert diese CLI-Zeile mit einem Hash:
puts JSON.pretty_generate(my_hash).gsub(":", " =>")
quelle
Verwenden Sie die obigen Antworten, wenn Sie an Benutzer drucken.
Wenn Sie es nur für sich selbst in der Konsole drucken möchten, empfehle ich, anstelle von irb den Pry Gem zu verwenden. Neben dem hübschen Drucken bietet pry noch viele andere Funktionen (siehe Railscast unten).
Und überprüfen Sie diesen Railscast:
http://railscasts.com/episodes/280-pry-with-rails
quelle
Einfach mit json zu tun, wenn Sie darauf vertrauen, dass Ihre Schlüssel vernünftig sind:
quelle
Mit Pry müssen Sie Ihrem ~ / .pryrc nur den folgenden Code hinzufügen:
quelle
Von allen Edelsteinen, die ich ausprobiert habe, hat
show_data
Edelstein am besten für mich funktioniert. Ich verwende ihn jetzt ausgiebig, um Parameter-Hash in Rails zu protokollierenquelle
Bei großen verschachtelten Hashes kann dieses Skript für Sie hilfreich sein. Es druckt einen verschachtelten Hash in einer schönen Python / ähnlichen Syntax mit nur Einrückungen, um das Kopieren zu vereinfachen.
Anwendungsbeispiel:
Der zurückgegebene Wert ist die Anzahl (3) aller End-Level-Werte des verschachtelten Hash.
quelle
Hier ist ein anderer Ansatz mit json und rouge:
(analysiert Antwort von zB
RestClient
)quelle
Unter Rails verfügen Arrays und Hashes in Ruby über integrierte to_json-Funktionen. Ich würde JSON verwenden, nur weil es in einem Webbrowser, z. B. Google Chrome, sehr gut lesbar ist.
Wenn Sie sich jedoch Sorgen machen, dass es zu "technisch aussehend" aussieht, sollten Sie wahrscheinlich Ihre eigene Funktion schreiben, die die geschweiften Klammern und eckigen Klammern in Ihren Hashes und Arrays durch Leerzeichen und andere Zeichen ersetzt.
Suchen Sie in der gsub-Funktion nach einer sehr guten Möglichkeit, dies zu tun. Spielen Sie weiter mit verschiedenen Charakteren und verschiedenen Leerzeichen, bis Sie etwas finden, das ansprechend aussieht. http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub
quelle
{"programming_language":{"ruby":{},"python":{}}}