Saat saya menjalankan skrip Ruby sederhana, apa cara termudah untuk membuang bidang objek ke konsol?
Saya mencari sesuatu yang mirip dengan PHP print_r()
yang akan bekerja dengan array juga.
ruby
printf-debugging
roryf
sumber
sumber
inspect
metode ke kelas Anda memungkinkan Anda untuk menentukan bagaimana atribut kelas ditampilkan, daripada bergantung pada output default. Banyak kelas yang tidak mengimplementasikannya dengan baik, tetapi bisa sangat berguna saat melakukan debugging. Ruby akan kembali keto_s
jika tidak menemukan metode inspeksi `.server = TCPServer.new 0 ; puts server.inspect #<TCPServer:fd 9> => nil
. itu tidak akan berfungsi untuk objek paling kompleks.var_dump
setara dengan php di ruby, saya menemukan itupp
jauh usaful dalam kasus itu, lihat di sini - stackoverflow.com/questions/6501506/ruby-inspect-readability/…p object
ini adalah alias untukputs object.inspect
Anda mungkin menemukan penggunaan
methods
metode yang mengembalikan array metode untuk objek. Ini tidak sama denganprint_r
, tetapi masih berguna di kalisumber
instance_methods
dari kelas 'dalam pertanyaan untuk mendapatkan metode yang unik:(String.instance_methods - Object.instance_methods).sort
.methods.sort
sangat bermanfaat. Apakah ada cara 'pintar' untuk dengan cepat menunjukkan metode yang (samar-samar) unik untuk objek tertentu? Misalnya metode seperti.to_s
mungkin sering muncul sehingga tidak semua yang berguna, tetapi beberapa itu bisa sangat berguna untuk mengetahui metode tertentu untuk objek tertentu. Terutama dalam kasus-kasus yang tidak jelas. Apakah ada cara untuk mendapatkannya dengan cepat? (contohnya, saya memilikiPG::Result
objek, dan ingin segera menilai metode yang mungkin saya temukan berguna.The
to_yaml
Metode tampaknya kadang-kadang berguna:kembali
(Apakah ini tergantung pada beberapa
YAML
modul yang dimuat? Atau apakah itu biasanya tersedia?)sumber
to_yaml
membutuhkan model YAML untuk dimuat. Ini adalah bagian dari pustaka standar Ruby.Dok Ruby untuk
p
.sumber
Jika Anda mencari hanya variabel instan dalam objek, ini mungkin berguna:
atau sebagai one-liner untuk menyalin dan menempel:
sumber
menempatkan foo.to_json
mungkin berguna karena modul json dimuat secara default
sumber
to_json
tidak dimuat secara default di 1.8.7 atau 1.9.2.Jika Anda ingin mencetak JSON yang sudah indentasi :
sumber
Saya menemukan utas ini karena saya mencari sesuatu yang serupa. Saya suka tanggapan dan mereka memberi saya beberapa ide jadi saya menguji metode .to_hash dan bekerja sangat baik untuk use case juga. soo:
object.to_hash
sumber
sumber
undefined method 'attributes' for ...
object.attributes_name
tidak bekerja, tetapiobject.attributes
tidak untuk mendapatkan hash kunci dan nilai yang bagus. Ini membantu saya, terima kasih!