Saya sedang mencari cara untuk membuang struktur suatu objek, mirip dengan fungsi PHP print_r
dan var_dump
untuk alasan debugging.
ruby-on-rails
ruby
Daniel Rikowski
sumber
sumber
puts theobject.inspect.gsub(",", "\n")
Dalam tampilan:
Di pengontrol, model, dan kode lainnya:
Sumber
sumber
Dalam sebuah tampilan, Anda dapat menggunakan
<%= debug(yourobject) %>
yang akan menghasilkan tampilan YAML dari data Anda. Jika Anda menginginkan sesuatu di log Anda, Anda harus menggunakanlogger.debug yourobject.inspect
.sumber
Anda juga dapat menggunakan YAML :: dump shorthand ( y ) di bawah konsol Rails:
Jika Anda ingin melihat pratinjau beberapa konten string, coba gunakan kenaikan (misalnya di model, pengontrol, atau tempat lain yang tidak dapat diakses). Anda mendapatkan backtrace gratis :)
Saya juga sangat mendorong Anda untuk mencoba ruby-debug :
Ini sangat membantu!
sumber
Anda bisa menggunakan
puts some_variable.inspect
. Atau versi yang lebih pendek:p some_variable
. Dan untuk hasil yang lebih cantik, Anda dapat menggunakan permata awesome_print .sumber
Jika Anda hanya ingin data yang relevan ditampilkan ke stdout (keluaran terminal jika Anda menjalankan dari baris perintah), Anda dapat menggunakan
p some_object
.sumber
Jawaban sebelumnya sangat bagus, tetapi jika Anda tidak ingin menggunakan konsol (terminal), di Rails Anda dapat mencetak hasilnya di View dengan menggunakan Helper ActionView :: Helpers :: DebugHelper debug
hasil (di browser)
sumber
Saya menggunakan ini :)
sumber
Akhir-akhir ini saya menggunakan awesome_print 's
ap
metode yang bekerja pada konsol serta dalam pandangan.Keluaran berwarna khusus jenis benar-benar membuat perbedaan jika Anda perlu memindai objek
String
atau secara visualNumeric
(Meskipun saya harus mengubah sedikit stylesheet saya untuk mendapatkan tampilan yang dipoles)sumber
Baru-baru ini saya menjadi penggemar PRY , saya merasa luar biasa karena melakukan hal-hal seperti memeriksa variabel, men-debug kode yang sedang berjalan, dan memeriksa kode eksternal. Ini mungkin sedikit berlebihan sebagai jawaban untuk pertanyaan khusus ini.
sumber