पिछले हफ्ते हमने honeybadger Ruby जेम का वर्जन 4.0.0 जारी किया। इस रिलीज़ में एक लंबे समय से प्रतीक्षित सुविधा शामिल है जो आपकी त्रुटि रिपोर्ट को Honeybadger को भेजे जाने से पहले अनुकूलित करना और भी आसान बनाती है। हमने कुछ बहुत जरूरी रीफैक्टरिंग भी की, और अच्छे उपाय के लिए कुछ निष्कासन और डिप्रिकेशन किए। चिंता न करें, हालांकि—अधिकांश API अपरिवर्तित रहता है, इसलिए अधिकांश उपयोगकर्ताओं के लिए अपग्रेड अपेक्षाकृत दर्द रहित प्रक्रिया होनी चाहिए।
before_notify कॉलबैक का परिचय
honeybadger जेम के पिछले वर्जन्स ने तीन कॉलबैक प्रदान किए जिनका उपयोग रिपोर्ट की गई त्रुटियों के विभिन्न पहलुओं को अनुकूलित करने के लिए किया जा सकता था:
Honeybadger.backtrace_filter— Honeybadger को रिपोर्ट किए गए बैकट्रेस को संशोधित करने के लिए एक कॉलबैकHoneybadger.exception_fingerprint— Honeybadger में त्रुटियों के समूह को अनुकूलित करने के लिए एक कॉलबैकHoneybadger.exception_filter— यह निर्धारित करने के लिए एक कॉलबैक कि त्रुटि रिपोर्ट को पूरी तरह से छोड़ दिया जाना चाहिए या नहीं
इन कॉलबैक्स के अलावा, त्रुटि रिपोर्ट में अन्य डेटा को बदलने का कोई वैश्विक तरीका नहीं था, जैसे त्रुटि संदेश, टैग, या रिक्वेस्ट डेटा—स्थानीय रूप से अपवादों को बचाने और रिपोर्ट करने के अलावा। यहीं पर नया before_notify कॉलबैक आता है। वास्तव में, नया कॉलबैक इतना बहुमुखी है कि यह पिछले तीनों कॉलबैक्स को पूरी तरह से बदल रहा है, जो अब डिप्रिकेटेड हैं।
आगे बढ़ते हुए, आप इन सभी कार्यों को पूरा करने के लिए before_notify कॉलबैक का उपयोग कर सकते हैं, और अधिक। एकाधिक कॉलबैक्स भी समर्थित हैं, जो Honeybadger को कॉन्फ़िगर करते समय अधिक लचीलापन प्रदान करते हैं:
Honeybadger.configure do |config|
# एक त्रुटि रिपोर्ट को अनदेखा करें
# Honeybadger.exception_filter को प्रतिस्थापित करता है
config.before_notify do |notice|
notice.halt! if notice.controller == 'auth'
end
# बैकट्रेस संशोधित करें
# Honeybadger.backtrace_filter को प्रतिस्थापित करता है
config.before_notify do |notice|
notice.backtrace.reject!{|l| l =~ /gem/ }
end
# त्रुटि समूह अनुकूलित करें
# Honeybadger.exception_fingerprint को प्रतिस्थापित करता है
config.before_notify do |notice|
notice.fingerprint = 'new fingerprint'
end
# सभी प्रॉपर्टीज़ बदलें!
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 का उपयोग करने के लिए अपडेट करना होगा, और संभावित रूप से कुछ अन्य मामूली परिवर्तन करने होंगे, क्योंकि Notice के लिए पब्लिक API (कॉलबैक में पास किया गया ऑब्जेक्ट) थोड़ा बदल गया है।
अधिक जानकारी के लिए:
- 3.x से 4.x अपग्रेड गाइड
- पूर्ण CHANGELOG