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

हनीबैगर जेम v3 में नया क्या है?

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 टैग्स के अंदर त्रुटियों के लिए बैकट्रेस में भी सुधार किया गया है।

  1. रूबी में एक नई प्रोग्रामिंग भाषा का निर्माण:दुभाषिया

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

  1. रूबी में स्टेट मशीन बनाने के लिए AASM रत्न का उपयोग कैसे करें

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

  1. रूबी में 9 नई सुविधाएँ 2.6

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