TLDR:केवल बुलेट पॉइंट के लिए, CHANGELOG देखें।
मैंने हाल ही में रूबी में अपवादों की रिपोर्ट करने के लिए हमारे रत्न को नवीनतम प्रमुख अपडेट भेज दिया है। जबकि v2release एक पूर्ण पुनर्लेखन था जिसमें एक नई कॉन्फ़िगरेशन रणनीति शामिल थी, v3 में कम ब्रेकिंग परिवर्तन होते हैं लेकिन बहुत सारे फीचर और उपयोगिता सुधार होते हैं। कवर करने के लिए बहुत कुछ है, इसलिए मैं इसमें गोता लगाने जा रहा हूं। आनंद लें!
सादा ol' Ruby मोड
रेल की दुनिया में यह काफी उम्मीद है कि जब आप एक मणि स्थापित करते हैं तो यह स्वचालित रूप से आपके आवेदन के साथ एकीकृत हो जाएगा। उदाहरण के लिए, कई रत्न रेल शुरू होने पर अपना कोड चलाने के लिए अपनी खुद की रेली प्रदान करते हैं।
हनीबैगर रत्न पूरी तरह से उस दृष्टिकोण को अपनाता है, जिससे रेल, सिनात्रा, साइडकीक और कई अन्य लोकप्रिय रत्नों और रूपरेखाओं के लिए व्यापक त्रुटि रिपोर्टिंग को सेटअप करना वास्तव में आसान हो जाता है। यह सचमुच उतना ही सरल है जितना require
'honeybadger'
।
हालाँकि, कुछ रूबीवादी अपने स्वयं के एकीकरण को रोल करना पसंद करते हैं। मंकीपैचिंग (जो रेल में बहुत कुछ होता है) उन्हें क्रोधित करता है, और आखिरी चीज जो वे चाहते हैं वह एक मणि के लिए अपने आवेदन को कम-से-स्पष्ट तरीकों से बदलने के लिए बस इसकी आवश्यकता होती है। मैं इसे पूरी तरह से समझता हूं (वास्तव में, मैं खुद उस मानसिकता की ओर प्रवृत्त होता हूं)।
हो सकता है कि अन्य लोग हमारे द्वारा एकीकृत किसी भी पुस्तकालय का उपयोग नहीं कर रहे हों और इसके बजाय Honeybadger.notify
का उपयोग करके स्वयं त्रुटियों की रिपोर्ट करेंगे। , रनटाइम पर अनावश्यक आरंभीकरण से बचना।
इसलिए मैंने "सादा राजभाषा 'रूबी" मोड (अनौपचारिक शीर्षक) जोड़ा। यदि आप उन अजीबोगरीब लोगों में से हैं, जिन्हें कॉन्फ़िगरेशन लिखना और स्क्रैच से मिडलवेयर इंस्टॉल करना पसंद है (या आप केवल सादे रूबी का उपयोग कर रहे हैं), तो अब आप require 'honeybadger/ruby'
सामान्य के बजाय require 'honeybadger'
. अब आप उपयोग कर सकते हैंHoneybadger.notify
, Honeybadger.context
, आदि किसी भी स्वचालित एकीकरण को सक्रिय किए बिना:रूबी के लिए यह न्यूनतम, पूर्वानुमेय त्रुटि ट्रैकिंग है:
require 'honeybadger/ruby'
begin
# Failing code
rescue => exception
Honeybadger.notify(exception)
end
एकाधिक एजेंट
सादे ओल 'रूबी की बात करें तो, अब आप अतिरिक्त एजेंट बनाने के लिए रूबी का उपयोग कर सकते हैं, जो आपके हनीबैगर प्रोजेक्ट में त्रुटियों की रिपोर्ट करते हैं। इसका मतलब है कि आप अंततः एक ही एप्लिकेशन में कई हनीबैगर परियोजनाओं में त्रुटियों की रिपोर्ट कर सकते हैं। यह इस तरह दिखता है:
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 का उपयोग करते हैं वर्तमान में रत्न को कॉन्फ़िगर करने के लिए, चिंता न करें -- कुछ भी नहीं बदला है, और यह अभी भी डिफ़ॉल्ट है!
उस ने कहा, हमारे पास ऐसे ग्राहक हैं जो रूबी से जेमप्रोग्रामेटिक रूप से कॉन्फ़िगर करने की क्षमता से चूक गए हैं। v3.0 में आपको दोनों दुनिया के सर्वश्रेष्ठ मिलते हैं:हम अभी भी honeybadger.yml के माध्यम से पूर्ण कॉन्फ़िगरेशन का समर्थन करते हैं और पर्यावरण चर और वापस जोड़ा है Honeybadger.configure
:
Honeybadger.configure do |config|
config.api_key = 'project api key'
config.exceptions.ignore += [CustomError]
end
कॉन्फ़िगरेशन के लिए प्राथमिकता YAML -> ENV -> रूबी है, जिसका अर्थ है कि पर्यावरण चर honeybadger.yml को ओवरराइड कर देंगे , और Honeybadger.configure
पर्यावरण चर को ओवरराइड करेगा।
क्रॉन जॉब और कमांड लाइन प्रोग्राम में त्रुटियों की रिपोर्ट करें
क्रॉन की लंबे समय से चली आ रही समस्याओं में से एक यह है कि इसकी स्वचालित ईमेल सुविधा त्रुटि आउटपुट को नहीं समझती है। निश्चित रूप से, यदि कोई कार्य विफल हो जाता है तो यह आपको ईमेल करेगा, लेकिन मानक आउटपुट उत्पन्न करने के लिए आपके सफल कार्य होने पर यह आपको ईमेल भी करेगा।
अरे, कम . पाने के लिए क्या आप Honeybadger का उपयोग नहीं करते हैं निष्क्रिय ईमेल अलर्ट? क्या यह अच्छा नहीं होगा यदि आप ईमेल के अलावा या इसके अलावा क्रॉन विफलताओं की रिपोर्ट करने के लिए हनीबैगर का उपयोग कर सकते हैं? अब आप कर सकते हैं।
हमने honeybadger exec
. जोड़ा है हमारे सीएलआई (कमांड लाइन इंटरफेस) को रिपोर्टिंग क्रॉन विफलताओं के साथ-साथ किसी भी को संभालने के लिए आदेश कमांड जिसे आप सामान्य रूप से कमांड लाइन के माध्यम से निष्पादित करते हैं। इसका अर्थ है बैश स्क्रिप्ट, निष्पादन योग्य, make
कार्य, आदि। इसका उपयोग करने के लिए, बस honeybadger exec
जोड़ें किसी भी आदेश से पहले:
$ honeybadger exec my-command --my-flag
यदि आदेश सफलतापूर्वक निष्पादित होता है तो यह कोड 0 से बाहर निकल जाएगा और कोई आउटपुट नहीं होगा (यहां तक कि मानक आउट डिफ़ॉल्ट रूप से अक्षम है, लेकिन आप इसे एक विशेष ध्वज के साथ सक्षम कर सकते हैं)। यदि आदेश विफल हो जाता है, हालांकि, आपको एक हनीबैगर अधिसूचना प्राप्त होगी जिसमें वह आदेश शामिल है जो चलाया गया था और पूरा आउटपुट।
क्योंकि honeybadger exec
सफल कमांड के लिए डिफ़ॉल्ट रूप से सभी आउटपुट को शांत करता है, यह क्रॉन की ईमेल सुविधा के साथ विशेष रूप से उपयोगी है। दोनों का उपयोग करकेhoneybadger exec
और क्रॉन ईमेल आपको एक कमांड विफल होने पर हनीबैगर सूचनाएं प्राप्त होंगी; यदि किसी कारण से हनीबैगर अधिसूचना भी विफल हो जाती है (उदाहरण के लिए, एक कनेक्शन समस्या के कारण), तो यह मूल कमांड से आउटपुट को डंप कर देगी और क्रोन अभी भी आपको विफलता के बारे में ईमेल करेगा।
कमांड लाइन से कस्टम त्रुटियों की रिपोर्ट करें
यह वाला बहुत आसान है। abash स्क्रिप्ट (या किसी भी शेल) से एक कस्टम हनीबैगर अधिसूचना भेजना चाहते हैं? honeybadger notify
का उपयोग करें :
$ honeybadger notify --message "This is an error from the command line"
आप वैकल्पिक फ़्लैग जैसे --class . का उपयोग कर सकते हैं , --घटक , --कार्रवाई , आदि अधिसूचना में अतिरिक्त गुण जोड़ने के लिए।
अन्य सुधार
हमने v3 में और भी अधिक सुविधाएं और सुधार जोड़े हैं:
Honeybadger.notify
अब एक अपवाद के अलावा एक स्ट्रिंग तर्क स्वीकार करता है, ताकि आपHoneybadger.notify("these are not the badgers you're looking for")
।- जब एक git रिपॉजिटरी के अंदर, git रिवीजन को अपवादों के साथ स्वचालित रूप से रिपोर्ट किया जाता है। संशोधन को नए
:revision
. के साथ मैन्युअल रूप से जोड़ा या बदला जा सकता है कॉन्फिग विकल्प। - सीएलआई का उपयोगकर्ता इंटरफ़ेस वर्बोज़ त्रुटि संदेशों के साथ अब बहुत अधिक मित्रवत है, और इसे एक स्टैंडअलोन निष्पादन योग्य (रेल के बाहर) के रूप में उपयोग किया जा सकता है।
- परीक्षण सूट लगभग 10 गुना तेज है, जिसका अर्थ है कि हम और भी अधिक नई सुविधाएं और एकीकरण तेजी से विकसित कर सकते हैं।
- अनुरोध डेटा फ़िल्टर अब डिफ़ॉल्ट रूप से वाइल्डकार्ड मिलान रणनीति का उपयोग करता है। इसलिए यदि आप "पासवर्ड" को फ़िल्टर करते हैं, तो "पासवर्ड" और "पासवर्ड_कॉन्फ़र्मेशन" अनुरोध पैरामीटर दोनों को फ़िल्टर किया जाएगा (इस तरह रेल फ़िल्टर काम करते हैं)।
परिवर्तन और निष्कासन
हमने कुछ बदलाव भी किए हैं और कुछ सुविधाओं को हटा दिया है जिनका अब कोई मतलब नहीं रहा:
- हमने रूबी 1.9.3 और 2.0.x के लिए समर्थन छोड़ दिया; आगे बढ़ना 2.1.0 सबसे कम आधिकारिक रूप से समर्थित संस्करण होगा।
- हमने v2 से सभी बहिष्करण हटा दिए हैं।
- बहिष्कृत मीट्रिक और ट्रेसिंग कोड हटा दिया गया है।
Honeybadger.start
अब आवश्यक नहीं है (और उपयोग किए जाने पर अपवाद उठाएगा)। यदि आपने पहले रेल के बाहर हनीबैजर का उपयोग किया था, तो आपHoneybadger.configure
का उपयोग कर सकते हैं एक अलगHoneybadger::Config
. बनाए बिना एजेंट को कॉन्फ़िगर करने के लिए उदाहरण या कॉल करनाHoneybadger.start
।- हमने
plugins.skip
का नाम बदल दिया हैskipped_pluggins
. का विकल्प औरsidekiq.use_component
अबtrue
है डिफ़ॉल्ट रूप से। - CGI वेरिएबल को अब श्वेतसूची में डाल दिया गया है ताकि दुर्घटनावश संवेदनशील डेटा लीक करना कठिन हो जाए।
- विकास में,
Honeybadger.notify
विधि अब वैध तर्कों के बिना बुलाए जाने पर अपवाद उठाती है। उत्पादन में यह त्रुटि लॉग करता है। - honeybadger.yml का मूल्यांकन करते समय त्रुटियां अब लॉग के बजाय उठाए गए हैं, पहले कॉन्फ़िगरेशन समस्याओं की पहचान करने में मदद करते हैं। त्रुटियों को डीबग करना आसान बनाने के लिए ERB टैग्स के अंदर त्रुटियों के लिए बैकट्रेस में भी सुधार किया गया है।