ข้อยกเว้นส่วนใหญ่เกิดจากการส่งข้อมูลที่ไม่คาดคิดไปยังวิธีการที่ทำงานได้ดี ดังนั้นการติดตามข้อมูลบางส่วนผ่านแอปพลิเคชันของคุณจึงมักเป็นประโยชน์เพื่อค้นหาสาเหตุของข้อผิดพลาด ในบทความนี้ เราจะพูดถึงการตรวจสอบข้อมูลในแอปพลิเคชัน Ruby และ Rails
ใส่
, #ตรวจสอบ
และ p
วาง
ของ Ruby เมธอดใช้สำหรับพิมพ์ข้อความไปยังคอนโซล
unknown = "This is a string"
puts unknown
เมื่อเรียกใช้สคริปต์ด้านบน ค่าจะถูกพิมพ์ออกมาเพื่อให้คุณเห็นว่ามีอะไรอยู่ข้างใน
$ ruby puts.rb
This is a string
อย่างไรก็ตาม หาก ไม่ทราบ
ตัวแปรเก็บสตริงว่าง ไม่มี
ค่าหรือแฮชว่างเปล่า วาง
จะพิมพ์บรรทัดว่าง ด้วยเหตุนี้ คุณจะไม่สามารถเห็นค่าที่แน่นอนได้ และคุณจะไม่สามารถแยกความแตกต่างระหว่างแฮชที่ว่างเปล่าและสตริงได้ เป็นต้น
$ ruby puts_empty_string.rb
โชคดีที่มีเมธอดของอินสแตนซ์ที่ชื่อว่า ตรวจสอบ ซึ่งใช้ได้กับทุกอ็อบเจ็กต์ที่คุณจะพบ มันจะส่งคืนการแสดงสตริงของวัตถุ
unknown = ""
puts unknown.inspect
สำหรับสตริงว่าง จะส่งกลับคู่ของเครื่องหมายคำพูด และสำหรับอาร์เรย์ จะส่งคืนวงเล็บคู่หนึ่ง
$ ruby inspect_empty_string.rb
""
$ ruby inspect_empty_array.rb
[]
เนื่องจากการรวมกันของ puts
และ ตรวจสอบ
ถูกใช้บ่อยมาก มีทางลัดที่ทำทั้งสองอย่างในครั้งเดียวเรียกว่า p
. มันทำสิ่งเดียวกันทุกประการ แต่พิมพ์เร็วกว่า
unknown = ""
p unknown # equivalent to `puts unknown.inspect`
การตรวจสอบข้อมูลในมุมมอง Rails
แม้ว่าจะมี p
ทางลัด ก็ยังมีประโยชน์ที่จะรู้เกี่ยวกับ ตรวจสอบ
เมธอดเมื่อคุณต้องการการแสดงสตริงของอ็อบเจ็กต์ ไม่มี พิมพ์ไปที่คอนโซล
ตัวอย่างเช่น ในมุมมอง Rails บางครั้งการพิมพ์ค่าไปยังหน้า HTML ที่เป็นผลลัพธ์จะมีประโยชน์มากกว่าในบางครั้ง แทนที่จะต้องค้นหาในบันทึก
<%= params.inspect %>
เมื่อตรวจสอบโครงสร้างข้อมูลที่ซับซ้อนมากขึ้น บางครั้งอาจค้นหาข้อมูลที่ต้องการได้ยาก เนื่องจากค่าที่ตรวจสอบจะพิมพ์อยู่ในบรรทัดเดียว
Rails ให้
อย่างที่คุณคาดไว้ มีทางลัดสำหรับการพิมพ์การแทนค่า YAML ของวัตถุด้วย ตัวอย่างข้างต้นสามารถเรียกได้ในครั้งเดียวโดยใช้
มีวิธีอื่นๆ ในการตรวจสอบข้อมูลในแอปพลิเคชันของคุณ เช่น ไลบรารี Pry และโปรแกรมแก้ไขข้อบกพร่องของ Ruby แม้ว่าจะเป็นความคิดที่ดีที่จะลองใช้วิธีอื่นๆ ในการตรวจสอบข้อมูล การเขียนบันทึกลงในคอนโซลหรือแสดงข้อมูลในมุมมองมักเป็นวิธีที่รวดเร็วที่สุดในการค้นหาว่าเกิดอะไรขึ้น
เราชอบที่จะรู้ว่าคุณชอบบทความนี้อย่างไร หากคุณมีคำถามเกี่ยวกับบทความนี้ และต้องการอ่านเกี่ยวกับอะไรต่อไป โปรดแจ้งให้เราทราบที่ @AppSignaldebug
ผู้ช่วยที่จะได้รับรอบนี้ แทนที่จะตรวจสอบค่าเพียงอย่างเดียว มันจะแปลงวัตถุให้เป็นตัวแทน YAML ที่มนุษย์อ่านได้และใส่ไว้ใน <%= debug params %>
ดีบัก
ผู้ช่วยใช้ to_yaml
เมธอดภายใต้ประทุนเพื่อรับการแสดง YAML ก่อนที่จะรวมไว้ใน irb(main):004:0* puts Product.first.to_yaml
--- !ruby/object:Product
concise_attributes:
- !ruby/object:ActiveRecord::Attribute::FromDatabase
name: id
value_before_type_cast: 4
- !ruby/object:ActiveRecord::Attribute::FromDatabase
name: title
value_before_type_cast: Title
....
y Product.first
.irb(main):004:0* y Product.first # equivalent to `puts Product.first.to_yaml`
--- !ruby/object:Product
...
"วาง"-ดีบัก