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