Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Honeybadger Gem v3: प्रमुख विशेषताएं, सुधार, और आपको क्या जानने की आवश्यकता है

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 टैग्स के अंदर एरर्स के लिए बैकट्रेस को भी सुधारा गया है ताकि एरर्स को डीबग करना आसान हो।
  1. Stoffle भाषा के लिए Ruby इंटरप्रेटर बनाना Stoffle भाषा के लिए Ruby इंटरप्रेटर बनाना

    GitHub पर पूर्ण स्रोत Stoffle प्रोग्रामिंग भाषा का एक पूर्ण कार्यान्वयन GitHub पर उपलब्ध है। यदि आपको बग मिलते हैं या आपके कोई प्रश्न हैं तो बेझिझक एक इश्यू खोलें। इस ब्लॉग पोस्ट में, हम Stoffle के लिए इंटरप्रेटर को लागू करना शुरू करने जा रहे हैं, एक खिलौना प्रोग्रामिंग भाषा जिसे पूरी तरह से

  1. रूबी में AASM के साथ स्टेट मशीन्स में महारत हासिल करें: एक व्यावहारिक गाइड रूबी में AASM के साथ स्टेट मशीन्स में महारत हासिल करें: एक व्यावहारिक गाइड

    आज आप स्टेट मशीन्स के बारे में सीखेंगे, वे कैसे काम करते हैं और AASM जेम के साथ अपने रूबी प्रोजेक्ट्स में उनका उपयोग कैसे करें। अब: एक ट्रैफिक लाइट की कल्पना करें... यह लाल, हरा या पीला हो सकता है। जब यह रंग बदलता है, तो अगला रंग वर्तमान पर आधारित होता है। मान लें कि यह वह प्रकार है जो नेत्रहीन लोग

  1. Ruby 2.6 में 9 प्रमुख संवर्द्धन का अन्वेषण Ruby 2.6 में 9 प्रमुख संवर्द्धन का अन्वेषण

    Ruby का एक नया संस्करण नई सुविधाओं और प्रदर्शन सुधारों के साथ आ रहा है। क्या आप परिवर्तनों के साथ बने रहना चाहेंगे? आइए एक नज़र डालते हैं! अंतहीन रेंज (Endless Ranges) Ruby 2.5 और पुराने संस्करण पहले से ही अंतहीन रेंज का एक रूप (Float::INFINITY के साथ) का समर्थन करते हैं, लेकिन Ruby 2.6 इसे अगले स्त