Saya memiliki hash besar dengan array dan hash bersarang. Saya hanya ingin mencetaknya sehingga 'dapat dibaca' oleh pengguna.
Saya ingin itu seperti to_yaml - itu cukup mudah dibaca - tapi masih terlalu teknologis.
Pada akhirnya akan menjadi pengguna akhir yang perlu membaca potongan data ini sehingga mereka perlu diformat dengan bersih.
Ada saran?
ruby
ruby-on-rails-3
Adam O'Connor
sumber
sumber
Jawaban:
Gunakan
pp
jika Anda membutuhkan solusi bawaan dan hanya ingin jeda baris yang masuk akal.Gunakan awesome_print jika Anda dapat menginstal permata. (Tergantung pada pengguna Anda, Anda mungkin ingin menggunakan
index:false
opsi untuk mematikan menampilkan indeks array.)sumber
Jika Anda memiliki JSON, saya sarankan
JSON.pretty_generate(hash)
karena lebih sederhana daripada awesome_print , terlihat hebat dipre
tag, dan memungkinkan untuk menyalin dengan mudah dari halaman web. (Lihat juga: Bagaimana saya bisa "cantik" memformat output JSON saya di Ruby on Rails? )sumber
puts JSON.pretty_generate(hash)
Solusi lain yang bekerja lebih baik untuk saya daripada
pp
atauawesome_print
:sumber
Pry::ColorPrinter.pp(obj)
menulis ke standar keluar tetapi dapat mengambil params tambahan, termasuk tujuan. SepertiPry::ColorPrinter.pp(obj, a_logger)
Jika Anda tidak memiliki tindakan permata mewah, tetapi memiliki JSON, baris CLI ini akan berfungsi pada hash:
puts JSON.pretty_generate(my_hash).gsub(":", " =>")
sumber
Gunakan jawaban di atas jika Anda mencetak ke pengguna.
Jika Anda hanya ingin mencetaknya sendiri di konsol, saya sarankan menggunakan pry gem daripada irb. Selain pencetakan yang cantik, pry juga memiliki banyak fitur lainnya (lihat railscast di bawah)
Dan periksa railscast ini:
http://railscasts.com/episodes/280-pry-with-rails
sumber
Mudah dilakukan dengan json jika Anda percaya kunci Anda waras:
sumber
Menggunakan Pry Anda hanya perlu menambahkan kode berikut ke ~ / .pryrc Anda:
sumber
Dari semua permata yang saya coba,
show_data
permata bekerja paling baik untuk saya, saya sekarang menggunakannya secara luas untuk mencatat hash params di Rails hampir sepanjang waktusumber
Untuk hash bersarang besar, skrip ini bisa membantu Anda. Ini mencetak hash bersarang dalam sintaks python bagus / seperti dengan hanya indentasi untuk membuatnya mudah untuk menyalin.
Contoh penggunaan:
Nilai yang dikembalikan adalah hitungan (3) dari semua nilai tingkat akhir hash bersarang.
sumber
Berikut ini pendekatan lain menggunakan json and rouge:
(respons parses dari misalnya
RestClient
)sumber
Di Rails
Jika Anda perlu
inspect
pada objek di Hashinspect
metode di objek Anda seperti yang seharusnya... maka ini bekerja dengan baik! (Dan semakin baik, semakin besar dan semakin bersarang objek Hash Anda.)
Sebagai contoh:
pretty_inspect
berasal dari PrettyPrint , yang termasuk rail secara default. Jadi, tidak perlu permata dan tidak perlu konversi ke JSON.Tidak di rel
Jika Anda tidak berada di Rails atau jika hal di atas gagal karena suatu alasan, coba gunakan
require "pp"
terlebih dahulu. Sebagai contoh:Contoh Lengkap
Big ol'
pretty_inspect
ed Hash contoh dari proyek saya dengan teks proyek-spesifik dari objek Diperiksa saya disunting:sumber
Di bawah Rails, array dan hash di Ruby memiliki fungsi to_json bawaan. Saya akan menggunakan JSON hanya karena sangat mudah dibaca dalam browser web, misalnya Google Chrome.
Yang sedang berkata jika Anda khawatir tentang hal itu tampak terlalu "terlihat tech" Anda mungkin harus menulis fungsi Anda sendiri yang menggantikan kurung kurawal dan kurung kurawal di hash dan array dengan white-space dan karakter lainnya.
Cari fungsi gsub untuk cara yang sangat baik untuk melakukannya. Terus bermain-main dengan karakter yang berbeda dan jumlah spasi yang berbeda hingga Anda menemukan sesuatu yang terlihat menarik. http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub
sumber
{"programming_language":{"ruby":{},"python":{}}}