TLDR: สำหรับเฉพาะ bullet points ดูที่ CHANGELOG
ผมเพิ่งปล่อย major update ล่าสุดของ gem สำหรับรายงานข้อยกเว้นใน Ruby v2 เป็น full re-write รวมกลยุทธ์ configuration ใหม่ v3 มี breaking changes น้อยกว่า แต่มี feature และ usability improvements มากมาย เนื้อหาเยอะ ขอเข้าเรื่องเลย
Plain ol' Ruby mode
ในโลก Rails คาดหวังว่า gem ติดตั้งจะ integrate กับแอปอัตโนมัติ เช่น gems หลายตัวให้ Railtie รันโค้ดตอน Rails initialize
honeybadger gem ยอมรับแนวทางนี้ ทำให้ setup error reporting ครบวงจรสำหรับ Rails, Sinatra, Sidekiq และ gems/frameworks ยอดนิยมอื่นๆ ง่ายมาก เพียง require 'honeybadger'
บาง Rubyists ชอบทำ integration เอง Monkey patching (พบมากใน Rails) ทำให้โกรธ และไม่อยากให้ gem เปลี่ยนแอปแบบไม่ชัดเจนเพียงแค่ require ผมเข้าใจ (ผมเองก็ชอบแนวคิดนี้)
อีกกลุ่มอาจไม่ใช้ไลบรารีที่เรา integrate และชอบรายงานข้อผิดพลาดเองด้วย Honeybadger.notify หลีกเลี่ยง initialization ที่ไม่จำเป็นตอน runtime
ดังนั้นผมเพิ่ม "Plain ol' Ruby" mode (ชื่อไม่เป็นทางการ) หากคุณเป็น "ขี้แปลก" ที่ชอบเขียน config และติดตั้ง middleware เอง (หรือใช้ plain Ruby) ตอนนี้สามารถ require 'honeybadger/ruby' แทน require 'honeybadger' ปกติ ตอนนี้ใช้ Honeybadger.notify, Honeybadger.context ได้โดยไม่มี auto integrations: minimal, predictable error tracking สำหรับ Ruby:
require 'honeybadger/ruby'
begin
# โค้ดที่ล้มเหลว
rescue => exception
Honeybadger.notify(exception)
end
Multiple agents
กล่าวถึง plain ol' Ruby ตอนนี้สามารถสร้าง agents เพิ่มเติมได้ ซึ่งเป็นตัวรายงานข้อผิดพลาดไปยัง Honeybadger project หมายความว่าสามารถรายงานข้อผิดพลาดไปยังหลาย Honeybadger projects ในแอปเดียวกันได้:
OtherBadger = Honeybadger::Agent.new
OtherBadger.configure do |config|
config.api_key = 'project api key'
end
begin
# โค้ดที่ล้มเหลว
rescue => exception
OtherBadger.notify(exception)
end
กลับมาของ Honeybadger.configure
ก่อนอื่น หากคุณใช้ honeybadger.yml config gem อยู่ อย่ากังวล — ไม่มีอะไรเปลี่ยน ยังคงเป็น default!
แต่เรามีลูกค้าที่ขาดความสามารถ config gem โดยโปรแกรมจาก Ruby ใน v3.0 ได้ทุกอย่าง: ยังรองรับ config 全面 ผ่าน honeybadger.yml และ environment variables และเพิ่ม Honeybadger.configure กลับมา:
Honeybadger.configure do |config|
config.api_key = 'project api key'
config.exceptions.ignore += [CustomError]
end
ลำดับความสำคัญของ config: YAML -> ENV -> Ruby หมายถึง environment variables จะ override honeybadger.yml และ Honeybadger.configure จะ override environment variables
รายงานข้อผิดพลาดใน cron jobs และ command line programs
ปัญหา cron มานาน: ฟีเจอร์อีเมลอัตโนมัติไม่เข้าใจ error output มันส่งอีเมลตอน task ล้มเหลว แต่ก็ส่งตอน task สำเร็จแต่ออกมาก standard output
เฮ้ คุณใช้ Honeybadger เพื่อรับ น้อยลง อีเมลแจ้งเตือนที่ไม่สามารถดำเนินการได้ไหม? ไม่เคยไหมถ้าใช้ Honeybadger รายงาน cron failures แทนหรือเพิ่มเติมจากอีเมล? ตอนนี้ทำได้
เราเพิ่มคำสั่ง honeybadger exec ใน CLI (Command Line Interface) จัดการรายงาน cron failures และ ทุก คำสั่งที่รันผ่าน command line ปกติ bash scripts, executables, make tasks, ฯลฯ ใช้งานง่าย: เพิ่ม honeybadger exec หน้าคำสั่ง:
$ honeybadger exec my-command --my-flag
ถ้าคำสั่งรันสำเร็จ จะ exit code 0 ไม่มี output (แม้ standard out disabled by default แต่ enable ได้ด้วย flag מיוחד) ถ้าล้มเหลว จะได้ notification Honeybadger พร้อมคำสั่งที่รันและ full output
เพราะ honeybadger exec ปิด output ทั้งหมด default สำหรับคำสั่งสำเร็จ จึงมีประโยชน์กับฟีเจอร์อีเมลของ cron ใช้ honeybadger exec และ cron emails พร้อมกัน: ได้ Honeybadger notifications ตอนคำสั่งล้มเหลว หาก Honeybadger notification ล้มเหลวด้วย (เช่น connection issue) จะ dump output จากคำสั่งเดิม และ cron ยังส่งอีเมลแจ้งล้มเหลว
รายงานข้อผิดพลาดกำหนดเองจาก command line
เรื่องนี้ง่าย: อยากส่ง custom Honeybadger notification จาก bash script (หรือ shell ใดๆ)? ใช้ honeybadger notify:
$ honeybadger notify --message "This is an error from the command line"
ใช้ flags optional เช่น --class, --component, --action เพื่อเพิ่ม properties ให้ notification
การปรับปรุงอื่นๆ
เราเพิ่มฟีเจอร์และ improvements อีกมากใน v3:
Honeybadger.notifyรับ string argument เพิ่ม นอกจาก exception ทำได้Honeybadger.notify("these are not the badgers you're looking for")- ขณะอยู่ใน git repository git revision จะถูกรายงานพร้อม exceptions อัตโนมัติ สามารถเพิ่ม/เปลี่ยน manual ด้วย config option ใหม่
:revision - CLI user interface ใช้งานง่ายขึ้น มี verbose error messages และใช้เป็น standalone executable ได้ (นอก Rails)
- Test suite เร็วขึ้นประมาณ 10 เท่า หมายถึงพัฒนา features และ integrations ใหม่ได้เร็วขึ้น
- Request data filter ใช้ wildcard match strategy โดย default หาก filter "password" จะ filter "password" และ "password_confirmation" request parameters ทั้งคู่ (เหมือน Rails filters)
การเปลี่ยนแปลงและการลบ
เราทำการเปลี่ยนแปลงและลบฟีเจอร์ที่ไม่คุ้มค่าแล้ว:
- Drop support Ruby 1.9.3 และ 2.0.x ขั้นต่ำ officially supported คือ 2.1.0
- ลบ deprecations ทั้งหมดจาก v2
- ลบ deprecated metrics และ tracing code
Honeybadger.startไม่จำเป็นแล้ว (จะ raise exception หากใช้) หากเคยใช้ Honeybadger นอก Rails ให้ใช้Honeybadger.configureconfig agent โดยไม่ต้องสร้างHoneybadger::Configinstance แยกหรือเรียกHoneybadger.start- rename
plugins.skipoption เป็นskipped_plugginsและsidekiq.use_componentตอนนี้trueby default - CGI variables ตอนนี้ whitelisted ทำให้ยากขึ้นที่จะ leak sensitive data โดยบังเอิญ
- ใน development
Honeybadger.notifyตอนนี้ raise exception เมื่อเรียกโดยไม่มี valid arguments ใน production จะ log error - Errors ตอน evaluate honeybadger.yml ตอนนี้ raise แทน log ช่วยระบุปัญหา config เร็วขึ้น Backtraces สำหรับ errors ภายใน ERB tags ปรับปรุงให้ debug ง่ายขึ้น