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

เชี่ยวชาญ Exception Handling ใน Pry: เทคนิคขั้นสูงสำหรับ Rails Console

ถ้าคุณแบบผม ใช้ Rails console บ่อย และตอนนี้ทุกคนคิดว่า Pry คือสิ่งดีที่สุดเกิดขึ้นกับ Rails console ตั้งแต่...เมื่อไหร่ก็ตาม

Built-in ใน pry มี features cool ที่ทำให้จัดการ exceptions ง่ายกว่า IRB ทั่วไปมาก

View Full Backtrace

เวลา exceptions เกิดใน Pry (หรือ IRB) ได้ shortened backtrace ปกติพอ แต่ไม่ใช่เสมอไป

ใน pry ดู full backtrace ของ most recent exception ด้วยคำสั่ง wtf -v ถ้าไม่ใส่ -v flag ได้ abbreviated backtrace

เชี่ยวชาญ Exception Handling ใน Pry: เทคนิคขั้นสูงสำหรับ Rails Console ใช้คำสั่ง wtf เข้าถึง most recent backtrace

Access Exception Data

Exceptions มักมี data น่าสนใจ attached ใน IRB เห็นแค่ class name และ error message แต่ Pry เข้าถึง exception object จริง ดึง data ที่ต้องการได้

ดู most recently raised exception 用 variable _ex_ ต่างจาก Ruby built-in $! ไม่ต้องอยู่ใน rescue block

เชี่ยวชาญ Exception Handling ใน Pry: เทคนิคขั้นสูงสำหรับ Rails Console ใช้ ex local variable เข้าถึง most recent exception

Customize How Exceptions Are Displayed

สมมติอยากดู full backtrace เสมอใน pry ทำได้โดย override default exception handler

เปิด ~/.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 

ทำ crazy stuff ได้ เช่น log ทุก Pry exceptions ไป Honeybadger :)