Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

การตรวจสอบข้อมูลใน Ruby

ข้อยกเว้นส่วนใหญ่เกิดจากการส่งข้อมูลที่ไม่คาดคิดไปยังวิธีการที่ทำงานได้ดี ดังนั้นการติดตามข้อมูลบางส่วนผ่านแอปพลิเคชันของคุณจึงมักเป็นประโยชน์เพื่อค้นหาสาเหตุของข้อผิดพลาด ในบทความนี้ เราจะพูดถึงการตรวจสอบข้อมูลในแอปพลิเคชัน 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 ให้ debug ผู้ช่วยที่จะได้รับรอบนี้ แทนที่จะตรวจสอบค่าเพียงอย่างเดียว มันจะแปลงวัตถุให้เป็นตัวแทน 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
  ....

อย่างที่คุณคาดไว้ มีทางลัดสำหรับการพิมพ์การแทนค่า YAML ของวัตถุด้วย ตัวอย่างข้างต้นสามารถเรียกได้ในครั้งเดียวโดยใช้ y Product.first .

irb(main):004:0* y Product.first # equivalent to `puts Product.first.to_yaml`
--- !ruby/object:Product
...

"วาง"-ดีบัก

มีวิธีอื่นๆ ในการตรวจสอบข้อมูลในแอปพลิเคชันของคุณ เช่น ไลบรารี Pry และโปรแกรมแก้ไขข้อบกพร่องของ Ruby แม้ว่าจะเป็นความคิดที่ดีที่จะลองใช้วิธีอื่นๆ ในการตรวจสอบข้อมูล การเขียนบันทึกลงในคอนโซลหรือแสดงข้อมูลในมุมมองมักเป็นวิธีที่รวดเร็วที่สุดในการค้นหาว่าเกิดอะไรขึ้น

เราชอบที่จะรู้ว่าคุณชอบบทความนี้อย่างไร หากคุณมีคำถามเกี่ยวกับบทความนี้ และต้องการอ่านเกี่ยวกับอะไรต่อไป โปรดแจ้งให้เราทราบที่ @AppSignal