ถ้าคุณเป็นเหมือนฉัน คุณใช้คอนโซล Rails บ่อยมาก และตอนนี้ฉันคิดว่าทุกคนเห็นพ้องต้องกันว่า Pry เป็นสิ่งที่ดีที่สุดที่จะเกิดขึ้นกับคอนโซล Rails ตั้งแต่นั้นมา...
Built-in to pry เป็นฟีเจอร์เจ๋งๆ บางส่วนที่ช่วยให้ทำงานโดยมีข้อยกเว้นได้ง่ายกว่าใน IRB แบบเก่าทั่วไป
ดูย้อนหลังแบบเต็ม
เมื่อข้อยกเว้นเกิดขึ้นใน Pry (หรือ IRB สำหรับเรื่องนั้น) คุณจะเห็น backtrace เวอร์ชันสั้น ปกติดีพอแต่ไม่เสมอไป
ใน pry คุณสามารถดู backtrace ทั้งหมดของข้อยกเว้นล่าสุดได้โดยใช้คำสั่ง wtf -v หากคุณเว้นแฟล็ก -v ไว้ คุณจะได้รับ backtrace แบบย่อ
ใช้คำสั่ง wtf เพื่อเข้าถึง backtrace ล่าสุด
ข้อมูลข้อยกเว้นการเข้าถึง
ข้อยกเว้นมักจะมีข้อมูลที่น่าสนใจแนบมาด้วย เมื่อมีข้อยกเว้นเกิดขึ้นใน IRB คุณจะเห็นเฉพาะชื่อคลาสและข้อความแสดงข้อผิดพลาดเท่านั้น แต่ด้วย Pry คุณสามารถเข้าถึงวัตถุยกเว้นจริงได้ หมายความว่าคุณเข้าถึงและดึงข้อมูลที่ต้องการได้
หากต้องการรับข้อยกเว้นที่แจ้งล่าสุด ให้ใช้ _ex_
ตัวแปร. ไม่เหมือนกับ $!
. ในตัวของ Ruby คุณไม่จำเป็นต้องอยู่ในบล็อกกู้ภัยเพื่อใช้งาน
ใช้ ตัวอย่าง ตัวแปรท้องถิ่นเพื่อเข้าถึงข้อยกเว้นล่าสุด
กำหนดวิธีการแสดงข้อยกเว้น
สมมติว่าคุณต้องการเห็น backtrace ทั้งหมดเมื่อคุณอยู่ใน pry? คุณสามารถทำได้โดยแทนที่ตัวจัดการข้อยกเว้นเริ่มต้น
แค่เปิด ~/.pryrc แล้วทำให้มันเป็นแบบนี้:
# This code was mostly taken from the default exception handler.
# You can see it here: https://github.com/pry/pry/blob/master/lib/pry.rb
Pry.config.exception_handler = proc do |output, exception, _|
if UserError === exception && SyntaxError === exception
output.puts "SyntaxError: #{exception.message.sub(/.*syntax error, */m, '')}"
else
output.puts "#{exception.class}: #{exception.message}"
output.puts "from #{exception.backtrace}"
end
end
คุณยังสามารถทำสิ่งที่บ้าๆ บอๆ เช่น บันทึกข้อยกเว้น Pry ทั้งหมดของคุณไปที่ Honeybadger :)