เมื่อสัปดาห์ที่แล้วเราได้เปิดตัว honeybadger
. เวอร์ชัน 4.0.0 พลอยทับทิม. รุ่นนี้มีคุณลักษณะที่รอคอยมานาน ซึ่งทำให้ง่ายต่อการปรับแต่งรายงานข้อผิดพลาดของคุณก่อนที่จะถูกส่งไปยัง Honeybadger เรายังได้ทำการ refactoring ที่จำเป็นมาก และได้ทำการลบออกบางส่วนและเลิกใช้งานเพื่อการวัดผลที่ดี ไม่ต้องกังวล แม้ว่า API ส่วนใหญ่จะไม่เปลี่ยนแปลง ดังนั้นการอัปเกรดควรเป็นกระบวนการที่ไม่ยุ่งยากสำหรับผู้ใช้ส่วนใหญ่
แนะนำ before_notify
โทรกลับ
honeybadger
เวอร์ชันก่อนหน้า gem ให้การโทรกลับสามครั้งซึ่งสามารถใช้เพื่อปรับแต่งแง่มุมต่างๆ ของข้อผิดพลาดที่รายงาน:
Honeybadger.backtrace_filter
— การเรียกกลับเพื่อแก้ไข backtrace ที่รายงานไปยัง HoneybadgerHoneybadger.exception_fingerprint
— การโทรกลับเพื่อปรับแต่งการจัดกลุ่มข้อผิดพลาดใน HoneybadgerHoneybadger.exception_filter
— การเรียกกลับเพื่อพิจารณาว่าควรข้ามรายงานข้อผิดพลาดทั้งหมดหรือไม่
นอกเหนือจากการเรียกกลับเหล่านี้แล้ว ไม่มีทางทั่วโลกในการเปลี่ยนแปลงข้อมูลอื่นๆ ในรายงานข้อผิดพลาด เช่น ข้อความแสดงข้อผิดพลาด แท็ก หรือข้อมูลคำขอ—นอกเหนือจากการช่วยเหลือและการรายงานข้อยกเว้นในเครื่อง นั่นคือสิ่งที่ before_notify
. ใหม่ การโทรกลับเข้ามา อันที่จริงแล้วการโทรกลับใหม่นั้นใช้งานได้หลากหลายมากจนแทนที่การเรียกกลับก่อนหน้าทั้งสามรายการซึ่งเลิกใช้แล้วในขณะนี้
ต่อจากนี้ไป คุณสามารถใช้ before_notify
โทรกลับเพื่อทำงานเหล่านี้ทั้งหมดให้สำเร็จ และอีกมากมาย นอกจากนี้ยังรองรับการเรียกกลับหลายรายการ ซึ่งให้ความยืดหยุ่นมากขึ้นเมื่อกำหนดค่า Honeybadger:
Honeybadger.configure do |config|
# Ignore an error report
# Replaces Honeybadger.exception_filter
config.before_notify do |notice|
notice.halt! if notice.controller == 'auth'
end
# Modify the backtrace
# Replaces Honeybadger.backtrace_filter
config.before_notify do |notice|
notice.backtrace.reject!{|l| l =~ /gem/ }
end
# Customize error grouping
# Replaces Honeybadger.exception_fingerprint
config.before_notify do |notice|
notice.fingerprint = 'new fingerprint'
end
# Change all the properties!
config.before_notify do |notice|
notice.api_key = 'custom api key'
notice.error_message = "badgers!"
notice.error_class = 'MyError'
notice.backtrace = ["/path/to/file.rb:5 in `method'"]
notice.fingerprint = 'some unique string'
notice.tags = ['foo', 'bar']
notice.context = { user: 33 }
notice.controller = 'MyController'
notice.action = 'index'
notice.parameters = { q: 'badgers?' }
notice.session = { uid: 42 }
notice.url = "/badgers"
end
end
เรารู้สึกตื่นเต้นกับ before_notify
. ใหม่ โทรกลับและเชื่อว่าจะเปิดตัวเลือกใหม่ๆ มากมายในอนาคต!
กำลังอัปเกรดเป็น 4.x
สำหรับผู้ใช้ส่วนใหญ่บน 3.x การอัปเกรดควรเป็นไปอย่างราบรื่น หากคุณกำลังใช้การเรียกกลับทั้งสามที่ฉันได้กล่าวไว้ข้างต้น คุณจะต้องอัปเดตพวกเขาเพื่อใช้ before_notify
แทน และอาจทำการเปลี่ยนแปลงเล็กน้อยอื่นๆ ซึ่งเป็นส่วนหนึ่งของ API สาธารณะสำหรับ Notice
(วัตถุที่ส่งผ่านไปยังการโทรกลับ) มีการเปลี่ยนแปลงเล็กน้อย
สำหรับข้อมูลเพิ่มเติม:
- คู่มือการอัปเกรด 3.x เป็น 4.x
- ทำ CHANGELOG ให้สมบูรณ์