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

फ़्लिपर फ़ीचर फ़्लैग के साथ रेल में नई सुविधाएँ सुरक्षित रूप से तैनात करें

<पी> इस परिदृश्य को चित्रित करें:आप एक रेल डेवलपर हैं और आपने उस अद्भुत सुविधा को विकसित करने में पिछले कुछ दिन बिताए हैं जिसका हर कोई इंतजार कर रहा है। यह बड़ा और जटिल है, लेकिन यह कठोर परीक्षण से गुजरा है, इसलिए आप आश्वस्त हैं कि सब कुछ उसी तरह काम करेगा जैसा उसे करना चाहिए। मिलने की समय सीमा है, इसलिए आप तैनाती करें। तुरंत, सारा संकट खुल जाता है।

<पी> आपकी सुविधा सीधे तौर पर आपके कुछ उपयोगकर्ताओं के लिए संपूर्ण ऐप को तोड़ देती है। यह कहना कठिन है कि क्यों। परीक्षण के दौरान कोई बग नहीं दिखा। आप अपना परिवर्तन वापस कर देते हैं, लेकिन क्षति हो चुकी है। आपके ग्राहक खुश नहीं हैं, और आप निकट भविष्य में क्षति नियंत्रण और क्या गलत हुआ इसकी जांच करने में खर्च करेंगे।

<पी> समस्या यह है कि जटिल परिवर्तन जारी करना स्वाभाविक रूप से जोखिम भरा है, चाहे आप कितना भी परीक्षण कर लें। अच्छा होता यदि आप इस सुविधा को धीरे-धीरे शुरू करते, शायद पहले केवल कुछ मुट्ठी भर उपयोगकर्ताओं के लिए। यह और भी बेहतर होता यदि आप पहली समस्या आते ही सुविधा को बंद कर देते।

<पी> यह वही जगह है जहां फ़ीचर फ़्लैग आते हैं। इस पोस्ट में, हम रेल्स में फ़ीचर फ़्लैग के अंदर और बाहर के बारे में जानेंगे, जिसमें फ़्लिपर रत्न का उपयोग करके उन्हें कैसे सेट किया जाए। लेकिन पहले:वे क्या हैं?

रूबी ऑन रेल्स में फ़ीचर फ़्लैग क्या हैं?

<पी> फ़ीचर फ़्लैग आपके एप्लिकेशन के चलने के दौरान किसी फ़ीचर को सक्षम या अक्षम करने का एक तरीका है। यदि कोई ध्वज सक्षम है, तो सुविधा का उपयोग किया जाता है। अन्यथा, ऐसा नहीं है. छद्म कोड में कुछ इस तरह की कल्पना करें।

 <पी> 'फ़ीचर फ़्लैग' नाम कुछ हद तक भ्रामक है। रनटाइम पर एप्लिकेशन व्यवहार को नियंत्रित करना सुविधाओं तक ही सीमित नहीं है, बल्कि आपके प्रोग्राम के किसी भी फ़ंक्शन पर लागू होता है। उदाहरण के लिए, आप प्रदर्शन में सुधार करने और ए/बी परीक्षण चलाने के लिए फ़ीचर फ़्लैग का उपयोग कर सकते हैं। फ़ीचर फ़्लैग और किसी अन्य पुरानी शर्त के बीच एक महत्वपूर्ण अंतर यह है कि आप रनटाइम पर फ़ीचर फ़्लैग को संशोधित कर सकते हैं।

<पी> उदाहरण के लिए, आइए पर्यावरण चर का उपयोग करके एक सरल फीचर फ़्लैगिंग तंत्र की कल्पना करें।

 <पी> पर्यावरण चर के मान को संशोधित करके, हम अपनी इच्छानुसार अपने एप्लिकेशन के हिस्सों को चालू या बंद कर सकते हैं। किसी एप्लिकेशन का कौन सा भाग? कुछ भी जो आप चाहते हैं!

<पी> यदि कोई सुविधा अक्षम है तो आप यूआई के कुछ हिस्सों को छिपा सकते हैं। आप अपने कोड के कुछ हिस्सों को बदल सकते हैं, जो बहुत उपयोगी है यदि आप अपने नवीनतम रिफैक्टर में आश्वस्त नहीं हैं। फ़ीचर फ़्लैग का मेरा पसंदीदा उपयोग रूटिंग बाधाओं का उपयोग करके संपूर्ण मार्गों को छिपाना है:

 
 <पी> हम पहले से ही देख सकते हैं कि फ़ीचर फ़्लैग के लिए बहुत सारे एप्लिकेशन हैं। हालाँकि, हमारे अनुभवहीन कार्यान्वयन में एक महत्वपूर्ण कमजोरी है। प्रत्येक उपयोगकर्ता के लिए एक सुविधा या तो चालू या बंद है।

<पी> यदि हम केवल विशिष्ट उपयोगकर्ताओं या उपयोगकर्ताओं के समूहों के लिए, या केवल कुछ समय के लिए सुविधाओं को सक्षम करने की क्षमता चाहते हैं तो क्या होगा? आइए फ़्लिपर पर एक नज़र डालें।

फ़ीचर फ़्लैग के लिए फ़्लिपर जेम का उपयोग करना

<पी> फ़्लिपर एक रत्न है जो फीचर फ़्लैग और उन्हें टॉगल करने के विभिन्न तरीकों को रेल में उपलब्ध कराता है। यह अत्यधिक मॉड्यूलर है. मुख्य रत्न के अलावा, आपको एक स्टोरेज एडॉप्टर भी चुनना होगा - लेकिन उस पर बाद में और अधिक जानकारी दी जाएगी। आइए अभी ActiveRecord एडाप्टर का उपयोग करें।

<पी> अपनी Gemfile में निम्नलिखित पंक्तियाँ जोड़ें और bundle install चलाएँ :

 <पी> जब हम ActiveRecord एडाप्टर का उपयोग करते हैं, तो Flipper आपके फीचर फ़्लैग को डेटाबेस में संग्रहीत करेगा और इस प्रकार नए डेटाबेस तालिकाओं की स्थापना की आवश्यकता होगी। फ़्लिपर एक सुविधाजनक जनरेटर के साथ आता है जो आवश्यक माइग्रेशन बनाएगा।

 <पी> आप फ़्लिपर का उपयोग उसी तरह कर सकते हैं जैसे हमने पहले उपयोग किया था।

 <पी> बड़ा अंतर यह है कि पर्यावरण चर को संशोधित करने के बजाय, अब आप फ़्लिपर के उपयोगकर्ता इंटरफ़ेस का उपयोग करके सुविधाओं को टॉगल कर सकते हैं। फ़्लिपर यूआई रत्न जोड़ें और इसे इंस्टॉल करें।

 <पी> फ़्लिपर यूआई माउंट करने के लिए अपनी रूट फ़ाइल को संशोधित करें।

 <पी> यदि आप अपना एप्लिकेशन शुरू करते हैं और फ़्लिपर यूआई पर नेविगेट करते हैं, तो आपको सभी उपलब्ध सुविधाओं और उनकी स्थिति का अवलोकन दिखाई देगा। आगे बढ़ें और एक my_awesome_feature बनाएं सुविधा.

<पी> फ़्लिपर फ़ीचर फ़्लैग के साथ रेल में नई सुविधाएँ सुरक्षित रूप से तैनात करें

फ़्लिपर में फ़ीचर टॉगल

<पी> आपने शायद देखा होगा कि आप फ़्लिपर यूआई में किसी सुविधा को सक्षम या अक्षम करने के अलावा और भी बहुत कुछ कर सकते हैं। फ़्लिपर हमें उपयोगकर्ताओं के एक सबसेट या यहां तक कि कुछ प्रतिशत समय के लिए सुविधाओं को सक्षम करने की अनुमति देता है। आप पांच अलग-अलग तंत्रों में से किसी एक का उपयोग करके अपने फ़ीचर फ़्लैग को कॉन्फ़िगर कर सकते हैं।

<पी> उनमें से एक बूलियन टॉगल, एक वैश्विक ऑन-ऑफ स्विच है। अन्य चार उससे कहीं अधिक दिलचस्प हैं:समूह, अभिनेता, अभिनेताओं का प्रतिशत, और समय का प्रतिशत।

समूह

<पी> किसी सुविधा को केवल उपयोगकर्ताओं के किसी विशेष समूह के लिए सक्षम करने के लिए, समूह टॉगल का उपयोग करें। यदि यह मौजूद नहीं है, तो फ़ाइल config/initializers/flipper.rb बनाएं और एक नया समूह पंजीकृत करने के लिए निम्नलिखित कोड जोड़ें - उदाहरण के लिए, भुगतान किए गए उपयोगकर्ता।

 <पी> इस नए टॉगल का उपयोग करने के लिए, उपयोगकर्ता - या अभिनेता को पास करने के लिए फ़्लिपर आमंत्रण को संशोधित करें, जैसा कि दस्तावेज़ उन्हें कॉल करना पसंद करता है - और सुविधा का नाम।

 <पी> फ़्लिपर यह तय करने के लिए कि इस उपयोगकर्ता के लिए सुविधा सक्षम है या नहीं, इनिशियलाइज़र में आपके द्वारा परिभाषित ब्लॉक का उपयोग करेगा। इस स्थिति में, यह paid? को लागू करेगा विधि. अब आप इस समूह का उपयोग फ़्लिपर यूआई में कर सकते हैं। 'समूह जोड़ें' बटन पर क्लिक करें और अपना समूह चुनें।

<पी> फ़्लिपर फ़ीचर फ़्लैग के साथ रेल में नई सुविधाएँ सुरक्षित रूप से तैनात करें

<पी> आपके समूह को भुगतान करने वाले उपयोगकर्ताओं की आवश्यकता नहीं है। यह आपकी टीम के सदस्य या वे उपयोगकर्ता हो सकते हैं जिन्होंने बीटाप्रोग्राम के लिए साइन अप किया है। यदि आप उपयोगकर्ताओं के किसी सबसेट के लिए कुछ जारी करना चाहते हैं तो समूह टॉगल का उपयोग करना सहायक होता है। बीटारिलीज़ या आंतरिक रिलीज़ की कल्पना करें।

अभिनेता

<पी> कभी-कभी, आप किसी एक व्यक्ति को कुछ जारी करना चाह सकते हैं। इस मामले में, अभिनेता का टॉगल विचारणीय है।

<पी> इस तंत्र का उपयोग करने के लिए आपको अपने इनिशियलाइज़र में कुछ भी बदलने की ज़रूरत नहीं है। हालाँकि, आपको यह सुनिश्चित करना होगा कि आपका अभिनेता मॉडल - जो कि अधिकांश समय आपका उपयोगकर्ता मॉडल होगा - flipper_id लागू करता है . Flipper::Identifier सहित उसका ख्याल रखता है.

 
 <पी> फिर आप व्यक्तिगत उपयोगकर्ताओं के लिए एक सुविधा सक्षम करने के लिए इस आईडी का उपयोग कर सकते हैं।

<पी> फ़्लिपर फ़ीचर फ़्लैग के साथ रेल में नई सुविधाएँ सुरक्षित रूप से तैनात करें

<पी> यदि आप विशिष्ट व्यक्तियों के लिए कार्यक्षमता का पूर्वावलोकन करना चाहते हैं तो यह सुविधा टॉगल उपयोगी है। उन साझेदारों के लिए विशिष्ट परीक्षण खातों को सक्षम करने के बारे में सोचें जिन्हें किसी सुविधा को व्यापक दर्शकों के लिए जारी करने से पहले उस तक पहुंच की आवश्यकता है।

अभिनेताओं का प्रतिशत

<पी> यदि आप फीचर उपयोग को धीरे-धीरे बढ़ाना चाहते हैं, तो अभिनेताओं का प्रतिशत टॉगल आपके लिए है। कल्पना कीजिए कि आपने कुछ प्रदर्शन अनुकूलन लागू किया है, और आप निश्चित नहीं हैं कि यह उत्पादन में कैसा व्यवहार करेगा। आप इसे पहले कुछ प्रतिशत उपयोगकर्ताओं के लिए लागू करेंगे और फिर अपने एप्लिकेशन की निगरानी करते हुए धीरे-धीरे उपयोग बढ़ाएंगे।

<पी> फ़्लिपर फ़ीचर फ़्लैग के साथ रेल में नई सुविधाएँ सुरक्षित रूप से तैनात करें

<पी> यदि चीजें विपरीत दिशा में जाती हैं, तो आप हमेशा प्रतिशत को शून्य पर रीसेट कर सकते हैं।

समय का प्रतिशत

<पी> अंतिम लेकिन महत्वपूर्ण बात, आप कुछ प्रतिशत अनुरोधों के लिए एक सुविधा सक्षम कर सकते हैं। इस टॉगल का उपयोग करते समय आपको एक अभिनेता प्रदान करने की आवश्यकता नहीं है।

 <पी> मैं दो अलग-अलग कार्यान्वयनों के प्रदर्शन की तुलना करने के लिए इसका उपयोग करना पसंद करता हूं। ध्यान दें कि यह सुविधा टॉगल यादृच्छिक है। एक ही उपयोगकर्ता को प्रत्येक अनुरोध पर अलग व्यवहार का अनुभव होगा।

फ़्लिपर में उन्नत कॉन्फ़िगरेशन

<पी> हमने पहले ही देखा है कि हम अपने डेटाबेस में फीचर फ़्लैग जानकारी संग्रहीत करने के लिए ActiveRecord एडाप्टर का उपयोग कर सकते हैं। लेकिन आपकी विशिष्ट आवश्यकताओं के आधार पर, आप एक अलग एडॉप्टर का उपयोग करना चाह सकते हैं।

<पी> अधिकांश भाग के लिए, स्टोरेज एडॉप्टर को स्वैप करते समय आपको केवल संबंधित रत्न को स्थापित करना होगा और तदनुसार फ्लिपर को कॉन्फ़िगर करना होगा। उदाहरण के लिए, यदि आप रेडिस एडाप्टर का उपयोग करना चाहते हैं, तो आप flipper-redis जोड़ें अपनेGemfile पर रत्न लगाएं और Flipper इनिशियलाइज़र को अपडेट करें।

 
 <पी> स्टोरेज एडॉप्टर को कॉन्फ़िगर करने के अलावा, फ़्लिपर के कई अन्य पहलू हैं जिनमें आप बदलाव कर सकते हैं।

<पी> फ़ीचर फ़्लैग जोड़ने पर थोड़ा प्रदर्शन जुर्माना लगता है, इसलिए आप आमतौर पर मेमोइज़ेशन और कैशिंग जोड़ना चाहते हैं। आप संभवतः फ़्लिपर यूआई तक पहुंच को अधिकृत उपयोगकर्ताओं तक सीमित करना भी चाहेंगे। ये विषय इस पोस्ट के दायरे से बाहर हैं, लेकिन मेरा सुझाव है कि यदि आप गहराई में जाना चाहते हैं तो फ़्लिपर दस्तावेज़ देखें।

रेल में झंडे प्रदर्शित करने की चेतावनी

<पी> फीचर झंडे बहुत अच्छे हैं. लेकिन जैसा कि बहुत सी चीज़ों के साथ होता है, विचार करने के लिए कुछ समझौते भी हैं।

<पी> फ़ीचर फ़्लैग जोड़ने और उन्हें बनाए रखने से संगठनात्मक ओवरहेड जुड़ जाता है। झंडे का उपयोग करके छिपी हुई सुविधाओं को जारी करना और रोल आउट करना 'नियमित' कोड को तैनात करने जितना आसान नहीं है - आपको इसे चालू करना याद रखना होगा, निश्चित रूप से! आमतौर पर यह बहुत कठिन नहीं है, लेकिन उन फ़ीचर फ़्लैग को साफ़ करना जिनकी आपको अब आवश्यकता नहीं है, कठिन हो सकता है।

<पी> हर बार जब आप अपने कोड में एक फीचर फ़्लैग जोड़ते हैं, तो आप एक सशर्त जोड़ते हैं, और यदि आप सावधान नहीं रहते हैं, तो आपका कोड जल्दी ही उनसे अटे पड़ा है। आपने कुछ फ़ीचर फ़्लैग कब और क्यों बनाए, इस पर नज़र रखना चुनौतीपूर्ण हो सकता है। अफसोस की बात है कि फ़्लिपर यूआई स्वयं फ़ीचर फ़्लैग को प्रबंधित करने के लिए बहुत कुछ प्रदान नहीं करता है।

<पी> आपको यह भी पता होना चाहिए कि फीचर फ़्लैग का उपयोग करने पर मामूली प्रदर्शन जुर्माना लगेगा। इसे कम करने के कई तरीके हैं, लेकिन यदि आप फ़्लिपर को गलत तरीके से कॉन्फ़िगर करते हैं या उसका दुरुपयोग करते हैं तो इसका ध्यान देने योग्य प्रभाव हो सकता है।

रैप अप:रूबी ऑन रेल्स में फ़ीचर फ़्लैग के साथ शुरुआत करें

<पी> हमने देखा कि कैसे फ़ीचर फ़्लैग आपको अधिक आत्मविश्वास के साथ रिलीज़ करने में मदद कर सकते हैं, सीखा कि वे सिद्धांत रूप में कैसे कार्य करते हैं, और देखा कि आप फ़्लिपर रत्न का उपयोग करके फ़ीचर फ़्लैग के साथ कैसे शुरुआत कर सकते हैं।

<पी> ऐसी कई स्थितियाँ हैं जहाँ फ़ीचर फ़्लैग उपयोगी होते हैं। आपके उपयोग के मामले के आधार पर, आप पांच अलग-अलग टॉगल में से एक तक पहुंच सकते हैं - बूलियन, समूह, अभिनेता, अभिनेताओं का प्रतिशत, या अनुरोधों का प्रतिशत।

<पी> हालाँकि फ़ीचर फ़्लैग के साथ काम करने की अपनी बारीकियाँ हैं और इसकी आदत पड़ने में कुछ समय लग सकता है, फिर भी वे आपके लिए एक बेहतरीन उपकरण हैं।

<पी> अगली बार तक, कोडिंग का आनंद लें!

<पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें!
  1. Google मानचित्र के साथ HTML5 जिओलोकेशन का उपयोग करके वर्तमान स्थान कैसे दिखाएं? Google मानचित्र के साथ HTML5 जिओलोकेशन का उपयोग करके वर्तमान स्थान कैसे दिखाएं?

    HTML5 जिओलोकेशन एपीआई आपको अपनी पसंदीदा वेबसाइटों के साथ अपना स्थान साझा करने देता है। एक जावास्क्रिप्ट आपके अक्षांश और देशांतर को कैप्चर कर सकता है और वेब सर्वर को बैकएंड पर भेजा जा सकता है और स्थानीय व्यवसायों को खोजने या मानचित्र पर अपना स्थान दिखाने जैसी फैंसी स्थान-जागरूक चीजें कर सकता है। भौगो

  1. त्रिकोणीय माचिस की तीली संख्या के लिए C/C++ कार्यक्रम? त्रिकोणीय माचिस की तीली संख्या के लिए C/C++ कार्यक्रम?

    यहां हम देखेंगे कि पिरामिड को बनाने के लिए कितनी माचिस की तीलियों की गणना की जाती है। पिरामिड का आधार दिया गया है। इसलिए यदि आधार 1 है, तो पिरामिड बनाने में 3 माचिस की तीलियां लगेंगी, आधार 2 के लिए 9 माचिस की आवश्यकता होगी, आधार आकार 3 के लिए 18 माचिस की तीलियां लगेंगी। इस समस्या को हल करने के लि

  1. सीएसएस फ्लेक्सबॉक्स सीएसएस फ्लेक्सबॉक्स

    सीएसएस फ्लेक्सबॉक्स मॉडल स्थापित सीएसएस बॉक्स मॉडल को बेहतर बनाने के लिए बनाया गया था। फ्लेक्सबॉक्स मॉडल में अभी भी बॉक्स मॉडल (मार्जिन, पैडिंग, बॉर्डर और सामग्री) के प्रमुख तत्व शामिल हैं, लेकिन कंटेनर / माता-पिता के बच्चों के साथ स्थान को सर्वोत्तम रूप से भरने के लिए लचीलापन प्रदान करता है। यह