TLDR:Chỉ để biết các dấu đầu dòng, hãy xemCHANGELOG.
Gần đây, tôi đã gửi bản cập nhật lớn mới nhất cho gem của chúng tôi để báo cáo các ngoại lệ trong Ruby. Mặc dù v2release là một bản viết lại đầy đủ bao gồm chiến lược cấu hình mới, v3 có ít thay đổi đột phá hơn nhưng có nhiều cải tiến về tính năng và khả năng sử dụng.>
Chế độ thường của Ruby
Trong thế giới Rails, khá nhiều người mong đợi rằng khi bạn cài đặt một viên ngọc, nó sẽ tự động tích hợp với ứng dụng của bạn. Ví dụ:nhiều gemsp cung cấp Railtie của riêng họ để chạy mã riêng khi Rails khởi tạo.
Đá quý honeybadger hoàn toàn tuân theo cách tiếp cận đó, giúp bạn thực sự dễ dàng thiết lập báo cáo lỗi toàn diện cho Rails, Sinatra, Sidekiq và một số gem và framework phổ biến khác. Nó thực sự đơn giản như require
'honeybadger'
.
Tuy nhiên, một số người theo chủ nghĩa Ruby thích triển khai các tích hợp của riêng họ. Monkeypatching (xảy ra rất nhiều trong InRails) khiến họ nổi cơn thịnh nộ, và điều cuối cùng họ muốn là có một viên ngọc để thay đổi ứng dụng của họ theo những cách ít rõ ràng hơn bằng cách yêu cầu nó một cách đơn giản. Tôi hoàn toàn quên điều đó (trên thực tế, bản thân tôi cũng có xu hướng suy nghĩ đó).
Những người khác có thể không sử dụng bất kỳ thư viện nào mà chúng tôi tích hợp và muốn tự báo cáo lỗi bằng cách sử dụng Honeybadger.notify
, tránh việc tạo ra không cần thiết trong thời gian chạy.
Đó là lý do tại sao tôi đã thêm chế độ "Plain ol 'Ruby" (tiêu đề không chính thức). Nếu bạn là một trong những người Mỹ thích viết cấu hình và cài đặt phần mềm trung gian từ đầu (hoặc bạn chỉ đang sử dụng Ruby thuần túy), bây giờ bạn có thể require 'honeybadger/ruby'
thay vì require 'honeybadger'
bình thường . Bây giờ bạn có thể sử dụng Honeybadger.notify
, Honeybadger.context
, v.v. mà không có bất kỳ tích hợp tự động nào được kích hoạt:tính năng theo dõi lỗi tối thiểu, có thể dự đoán được choRuby:
require 'honeybadger/ruby'
begin
# Failing code
rescue => exception
Honeybadger.notify(exception)
end
Nhiều tác nhân
Nói về Ruby đơn giản, bây giờ bạn có thể sử dụng Ruby để tạo các tác nhân bổ sung, đó là những gì báo cáo lỗi cho dự án Honeybadger của bạn. Điều này có nghĩa là cuối cùng bạn cũng có thể báo cáo lỗi cho nhiều dự án Honeybadger trong cùng một ứng dụng. Đây là những gì nó trông như thế nào:
OtherBadger = Honeybadger::Agent.new
OtherBadger.configure do |config|
config.api_key = 'project api key'
end
begin
# Failing code
rescue => exception
OtherBadger.notify(exception)
end
Sự trở lại của Honeybadger.configure
Trước hết, nếu bạn sử dụng honeybadger.yml để định cấu hình gem hiện tại, đừng lo lắng - không có gì thay đổi và nó vẫn là mặc định!
Điều đó nói rằng, chúng tôi đã có những khách hàng bỏ lỡ khả năng định cấu hình lập trình địa lý từ Ruby. Trong phiên bản 3.0, bạn sẽ có được những gì tốt nhất của cả hai thế giới:chúng tôi vẫn hỗ trợ cấu hình đầy đủ qua honeybadger.yml và các biến môi trường và đã được thêm lại Honeybadger.configure
:
Honeybadger.configure do |config|
config.api_key = 'project api key'
config.exceptions.ignore += [CustomError]
end
Ưu tiên cho cấu hình là YAML -> ENV -> Ruby, nghĩa là các biến môi trường sẽ ghi đè lên honeybadger.yml và Honeybadger.configure
sẽ ghi đè các biến môi trường.
Báo cáo lỗi trong cron job và chương trình dòng lệnh
Một trong những vấn đề lâu nay của cron là tính năng email tự động của nó không hiểu được lỗi xuất ra. Chắc chắn, nó sẽ gửi email cho bạn nếu một nhiệm vụ không thành công, nhưng nó cũng sẽ gửi email cho bạn khi nhiệm vụ thành công của bạn xảy ra để tạo ra kết quả chuẩn.
Này, bạn không sử dụng Honeybadger để nhận được ít hơn Các cảnh báo qua email không thể thực hiện được? Sẽ thật tuyệt nếu bạn có thể sử dụng Honeybadger để báo cáo lỗi cron thay vì hoặc ngoài email phải không? Bây giờ bạn có thể.
Chúng tôi đã thêm honeybadger exec
lệnh tới CLI (Giao diện dòng lệnh) của chúng tôi để xử lý các lỗi cron báo cáo cũng như bất kỳ lệnh mà bạn thường thực hiện thông qua dòng lệnh. Điều đó có nghĩa là tập lệnh bash, tập lệnh thực thi, make
nhiệm vụ, v.v. Để sử dụng nó, chỉ cần thêm honeybadger exec
trước bất kỳ lệnh nào:
$ honeybadger exec my-command --my-flag
Nếu lệnh thực thi thành công, nó sẽ thoát với mã 0 và không có đầu ra (ngay cả tiêu chuẩn cũng bị tắt theo mặc định, nhưng bạn có thể bật nó bằng thẻ đặc biệt). Tuy nhiên, nếu lệnh không thành công, bạn sẽ nhận được thông báo Honeybadger bao gồm lệnh đã được chạy và kết quả đầy đủ.
Bởi vì honeybadger exec
Làm im lặng tất cả đầu ra theo mặc định cho các lệnh thành công, nó đặc biệt hữu ích với tính năng email của cron. Bằng cách sử dụng cả honeybadger exec
và cron email bạn sẽ nhận được thông báo Honeybadger khi lệnh không thành công; nếu vì lý do nào đó mà thông báo của Honeybadger cũng không thành công (ví dụ:do sự cố kết nối), nó sẽ kết xuất đầu ra từ lệnh gốc và cron vẫn sẽ gửi email cho bạn về lỗi này.
Báo cáo lỗi tùy chỉnh từ dòng lệnh
Điều này khá đơn giản. Bạn muốn gửi một thông báo Honeybadger tùy chỉnh từ tập lệnh abash (hoặc bất kỳ trình bao nào)? Sử dụng honeybadger notify
:
$ honeybadger notify --message "This is an error from the command line"
Bạn có thể sử dụng các cờ tùy chọn như --class , - thành phần , --action , v.v. cung cấp các thuộc tính bổ sung cho thông báo.
Các cải tiến khác
Chúng tôi đã thêm nhiều tính năng và cải tiến hơn nữa trong v3:
-
Honeybadger.notify
bây giờ chấp nhận một đối số chuỗi ngoài một ngoại lệ, vì vậy bạn có thể thực hiệnHoneybadger.notify("these are not the badgers you're looking for")
. - Khi ở bên trong kho lưu trữ git, bản sửa đổi git sẽ tự động được báo cáo với các ngoại lệ. Có thể thêm hoặc thay đổi bản sửa đổi theo cách thủ công với
:revision
mới tùy chọn cấu hình. - Giao diện người dùng của CLI giờ đây thân thiện hơn nhiều với các thông báo lỗi dài dòng và nó có thể được sử dụng như một tệp thực thi độc lập (bên ngoài Rails).
- Bộ thử nghiệm nhanh hơn khoảng 10 lần, nghĩa là chúng tôi có thể phát triển thêm nhiều tính năng và tích hợp mới nhanh hơn.
- Bộ lọc dữ liệu yêu cầu hiện sử dụng chiến lược đối sánh ký tự đại diện theo mặc định. Vì vậy, nếu bạn lọc "mật khẩu", thì thông số yêu cầu "mật khẩu" và "password_confirmation" sẽ được lọc (đây là cách hoạt động của bộ lọc Rails).
Các thay đổi và xóa
Chúng tôi cũng đã thực hiện một số thay đổi và loại bỏ một số tính năng không hợp lý nữa:
- Chúng tôi đã bỏ hỗ trợ cho Ruby 1.9.3 và 2.0.x; trong tương lai 2.1.0 sẽ là phiên bản được hỗ trợ chính thức thấp nhất.
- Chúng tôi đã xóa tất cả những thứ không còn được dùng nữa khỏi v2.
- Các chỉ số và mã theo dõi không dùng nữa đã bị xóa.
-
Honeybadger.start
không còn cần thiết (và sẽ đưa ra một ngoại lệ nếu được sử dụng). Nếu trước đây bạn đã sử dụng Honeybadger bên ngoài Rails, bạn có thể sử dụngHoneybadger.configure
để định cấu hình tác nhân mà không cần tạoHoneybadger::Config
riêng biệt instance hoặc gọiHoneybadger.start
. - Chúng tôi đã đổi tên
plugins.skip
tùy chọn đểskipped_pluggins
vàsidekiq.use_component
bây giờ làtrue
theo mặc định. - Các biến CGI hiện đã được đưa vào danh sách cho phép để khó bị rò rỉ dữ liệu nhạy cảm.
- Đang được phát triển,
Honeybadger.notify
phương thức bây giờ tạo ra một ngoại lệ khi được gọi mà không có đối số hợp lệ. Trong quá trình sản xuất, nó ghi lại lỗi. - Lỗi khi đánh giá honeybadger.yml hiện được nâng lên thay vì ghi nhật ký, giúp xác định các sự cố cấu hình sớm hơn. Dấu lùi cho thẻ ERB bên cạnh lỗi cũng đã được cải thiện để giúp việc gỡ lỗi dễ dàng hơn.