TLDR:สำหรับหัวข้อย่อย ให้ดูที่ CHANGELOG
ฉันเพิ่งส่งการอัปเดตหลักล่าสุดไปยัง gem ของเราเพื่อรายงานข้อยกเว้นใน Ruby แม้ว่า v2release เป็นการเขียนใหม่ทั้งหมดซึ่งรวมถึงกลยุทธ์การกำหนดค่าใหม่ v3 มีการเปลี่ยนแปลงที่แตกหักน้อยกว่า แต่มีการปรับปรุงคุณสมบัติและการใช้งานมากมาย มีหลายสิ่งให้พูดถึง ดังนั้นฉันจะลงมือทันที ขอให้สนุก!
โหมดรูบี้ธรรมดา
ในโลกของ Rails เป็นที่คาดหวังอย่างมากว่าเมื่อคุณติดตั้งอัญมณี มันจะรวมเข้ากับแอปพลิเคชันของคุณโดยอัตโนมัติ ตัวอย่างเช่น gemsprovide ownRailtie เพื่อรันโค้ดของตัวเองเมื่อ Rails เริ่มต้น
อัญมณีฮันนีแบดเจอร์รวบรวมแนวทางดังกล่าวอย่างเต็มที่ ทำให้ง่ายต่อการตั้งค่าการรายงานข้อผิดพลาดที่ครอบคลุมสำหรับ Rails, Sinatra, Sidekiq และอัญมณีและเฟรมเวิร์กยอดนิยมอื่นๆ จำนวนหนึ่ง เรียบง่ายเหมือน require
'honeybadger'
.
Rubyists บางคนชอบที่จะรวมการผสานรวมของตนเอง Monkeypatching (ซึ่งเกิดขึ้นมากมายในRails) ทำให้พวกเขาเดือดดาล และสิ่งสุดท้ายที่พวกเขาต้องการคือให้อัญมณีเปลี่ยนแอปพลิเคชันด้วยวิธีที่ไม่ชัดเจนเพียงแค่ต้องการ ฉันเข้าใจอย่างถ่องแท้ (อันที่จริง ฉันมักจะมุ่งไปสู่กรอบความคิดนั้นเอง)
คนอื่นอาจไม่ได้ใช้ไลบรารีใด ๆ ที่เราผสานรวมและค่อนข้างจะรายงานข้อผิดพลาดด้วยตนเองโดยใช้ Honeybadger.notify
เพื่อหลีกเลี่ยงการเริ่มต้นโดยไม่จำเป็นขณะรันไทม์
นั่นเป็นเหตุผลที่ฉันเพิ่มโหมด "Plain ol' Ruby" (ชื่ออย่างไม่เป็นทางการ) หากคุณเป็นหนึ่งในพวกเราที่ชอบเขียนการกำหนดค่าและติดตั้งมิดเดิลแวร์ตั้งแต่เริ่มต้น (หรือคุณแค่ใช้ Ruby ธรรมดา) ตอนนี้คุณสามารถ require 'honeybadger/ruby'
แทน require 'honeybadger'
. ตอนนี้คุณสามารถใช้Honeybadger.notify
, Honeybadger.context
ฯลฯ โดยไม่มีการเปิดใช้งานการรวมอัตโนมัติ:มีการติดตามข้อผิดพลาดน้อยที่สุดและคาดเดาได้สำหรับ Ruby:
require 'honeybadger/ruby'
begin
# Failing code
rescue => exception
Honeybadger.notify(exception)
end
ตัวแทนหลายราย
เมื่อพูดถึง Ruby ทั่วไป คุณสามารถใช้ Ruby เพื่อสร้างตัวแทนเพิ่มเติม ซึ่งเป็นสิ่งที่รายงานข้อผิดพลาดในโครงการ Honeybadger ของคุณ ซึ่งหมายความว่าในที่สุดคุณสามารถรายงานข้อผิดพลาดไปยังโครงการ Honeybadger หลายโครงการในแอปพลิเคชันเดียวกันได้ นี่คือลักษณะ:
OtherBadger = Honeybadger::Agent.new
OtherBadger.configure do |config|
config.api_key = 'project api key'
end
begin
# Failing code
rescue => exception
OtherBadger.notify(exception)
end
การกลับมาของ Honeybadger.configure
ก่อนอื่น หากคุณใช้ honeybadger.yml เพื่อกำหนดค่าอัญมณีในขณะนี้ ไม่ต้องกังวล -- ไม่มีอะไรเปลี่ยนแปลง และยังคงเป็นค่าเริ่มต้น!
ที่กล่าวว่า เรามีลูกค้าที่พลาดความสามารถในการกำหนดค่าอัญมณีโดยทางโปรแกรมจาก Ruby ใน v3.0 คุณจะได้รับสิ่งที่ดีที่สุดจากทั้งสองโลก:เรายังคงสนับสนุนการกำหนดค่าแบบเต็มผ่าน honeybadger.yml และตัวแปรสภาพแวดล้อมและได้เพิ่มกลับ Honeybadger.configure
:
Honeybadger.configure do |config|
config.api_key = 'project api key'
config.exceptions.ignore += [CustomError]
end
ลำดับความสำคัญสำหรับการกำหนดค่าคือ YAML -> ENV -> Ruby หมายความว่าตัวแปรสภาพแวดล้อมจะแทนที่ honeybadger.yml และ Honeybadger.configure
willoverride ตัวแปรสภาพแวดล้อม
รายงานข้อผิดพลาดในงาน cron และโปรแกรมบรรทัดคำสั่ง
หนึ่งในปัญหาที่มีมายาวนานของ cron คือคุณลักษณะอีเมลอัตโนมัติไม่เข้าใจผลลัพธ์ของข้อผิดพลาด แน่นอนว่าจะส่งอีเมลถึงคุณหากงานล้มเหลว แต่จะส่งอีเมลถึงคุณด้วยเมื่องานที่ประสบความสำเร็จของคุณเกิดขึ้นเพื่อสร้างผลลัพธ์มาตรฐาน
เฮ้ อย่าใช้ Honeybadger เพื่อให้ น้อยลง การแจ้งเตือนทางอีเมลที่ไม่สามารถดำเนินการได้จะดีหรือไม่ ถ้าคุณสามารถใช้ Honeybadger เพื่อรายงานความล้มเหลวของ cron แทนหรือเพิ่มเติมจากอีเมล ตอนนี้คุณทำได้
เราได้เพิ่ม honeybadger exec
คำสั่ง CLI ของเรา (Command Line Interface) เพื่อจัดการกับการรายงานความล้มเหลวของ cron เช่นเดียวกับใดๆ คำสั่งที่คุณดำเนินการตามปกติผ่านทางบรรทัดคำสั่ง นั่นหมายถึง bash script, executables, make
งาน ฯลฯ หากต้องการใช้งาน เพียงเพิ่ม honeybadger exec
ก่อนคำสั่งใดๆ:
$ honeybadger exec my-command --my-flag
หากคำสั่งดำเนินการสำเร็จ คำสั่งจะออกด้วยรหัส 0 และไม่มีเอาต์พุต (แม้มาตรฐานออกจะถูกปิดใช้งานตามค่าเริ่มต้น แต่คุณสามารถเปิดใช้งานได้ด้วยแฟล็กพิเศษ) อย่างไรก็ตาม หากคำสั่งล้มเหลว คุณจะได้รับการแจ้งเตือน Honeybadger ซึ่งรวมถึงคำสั่งที่เรียกใช้และผลลัพธ์ทั้งหมด
เพราะ honeybadger exec
ปิดเสียงเอาต์พุตทั้งหมดตามค่าเริ่มต้นสำหรับคำสั่งที่ประสบความสำเร็จ ซึ่งจะมีประโยชน์อย่างยิ่งกับคุณลักษณะอีเมลของ cron โดยใช้ทั้งhoneybadger exec
และ อีเมล cron คุณจะได้รับการแจ้งเตือนของ Honeybadger เมื่อคำสั่งล้มเหลว หากการแจ้งเตือนของ Honeybadger ล้มเหลวด้วยเหตุผลบางอย่าง (เช่น เนื่องจากปัญหาการเชื่อมต่อ) ระบบจะดัมพ์เอาต์พุตจากคำสั่งเดิม และ cron จะยังคงส่งอีเมลถึงคุณเกี่ยวกับความล้มเหลว
รายงานข้อผิดพลาดที่กำหนดเองจากบรรทัดคำสั่ง
อันนี้ค่อนข้างง่าย ต้องการส่งการแจ้งเตือน Honeybadger แบบกำหนดเองจากสคริปต์ abash (หรือเชลล์ใด ๆ ) หรือไม่? ใช้ honeybadger notify
:
$ honeybadger notify --message "This is an error from the command line"
คุณสามารถใช้แฟล็กที่ไม่บังคับ เช่น --class , --ส่วนประกอบ , --action ฯลฯ เพื่อเพิ่มคุณสมบัติเพิ่มเติมในการแจ้งเตือน
การปรับปรุงอื่นๆ
เราได้เพิ่มฟีเจอร์และการปรับปรุงเพิ่มเติมใน v3:
Honeybadger.notify
ตอนนี้ยอมรับอาร์กิวเมนต์สตริงนอกเหนือจากข้อยกเว้น ดังนั้นคุณสามารถทำHoneybadger.notify("these are not the badgers you're looking for")
.- เมื่ออยู่ในที่เก็บ git การแก้ไข git จะถูกรายงานโดยอัตโนมัติโดยมีข้อยกเว้น การแก้ไขสามารถเพิ่มหรือเปลี่ยนแปลงได้ด้วยตนเองด้วย new
:revision
ตัวเลือกการกำหนดค่า - อินเทอร์เฟซผู้ใช้ของ CLI เป็นมิตรกับผู้ใช้มากขึ้นด้วยข้อความแสดงข้อผิดพลาดแบบละเอียด และอาจใช้เป็นไฟล์เรียกทำงานแบบสแตนด์อโลนได้ (นอก Rails)
- ชุดทดสอบเร็วขึ้นประมาณ 10 เท่า ซึ่งหมายความว่าเราสามารถพัฒนาคุณลักษณะและการผสานการทำงานใหม่ๆ ได้เร็วขึ้น
- ขณะนี้ตัวกรองข้อมูลคำขอใช้กลยุทธ์การจับคู่โดยใช้สัญลักษณ์แทนเป็นค่าเริ่มต้น ดังนั้น หากคุณกรอง "รหัสผ่าน" พารามิเตอร์คำขอ "รหัสผ่าน" และ "password_confirmation" จะถูกกรองทั้งคู่ (นี่คือวิธีการทำงานของตัวกรอง Rails)
การเปลี่ยนแปลงและการนำออก
เรายังได้ทำการเปลี่ยนแปลงและลบคุณลักษณะบางอย่างที่ไม่สมเหตุสมผลอีกต่อไป:
- เรายกเลิกการรองรับ Ruby 1.9.3 และ 2.0.x; ต่อจากนี้ไป 2.1.0 จะเป็นเวอร์ชันต่ำสุดที่รองรับอย่างเป็นทางการ
- เราได้นำการเลิกใช้งานทั้งหมดออกจาก v2 แล้ว
- นำเมตริกที่เลิกใช้แล้วและโค้ดติดตามออกแล้ว
Honeybadger.start
ไม่จำเป็นอีกต่อไป (และจะยกข้อยกเว้น ifused) หากก่อนหน้านี้คุณใช้ Honeybadger นอก Rails คุณสามารถใช้Honeybadger.configure
เพื่อกำหนดค่าตัวแทนโดยไม่ต้องสร้างHoneybadger::Config
. แยกต่างหาก อินสแตนซ์หรือโทรHoneybadger.start
.- เราเปลี่ยนชื่อ
plugins.skip
ตัวเลือกskipped_pluggins
และsidekiq.use_component
ตอนนี้true
โดยค่าเริ่มต้น - ขณะนี้ตัวแปร CGI อยู่ในรายการที่อนุญาตพิเศษ ดังนั้นจึงทำให้ข้อมูลที่ละเอียดอ่อนรั่วไหลโดยไม่ได้ตั้งใจได้ยากขึ้น
- กำลังพัฒนา
Honeybadger.notify
วิธีการตอนนี้ทำให้เกิดข้อยกเว้นเมื่อถูกเรียกโดยไม่มีอาร์กิวเมนต์ที่ถูกต้อง ในการผลิตจะบันทึกข้อผิดพลาด - ข้อผิดพลาดเมื่อประเมิน honeybadger.yml ตอนนี้ถูกยกขึ้นแทนการบันทึก ช่วยในการระบุปัญหาการกำหนดค่าก่อนหน้านี้ นอกจากนี้ การติดตามข้อผิดพลาดภายในแท็ก ERB ยังได้รับการปรับปรุงเพื่อให้แก้ไขข้อผิดพลาดได้ง่ายขึ้น