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

रूबी ऑन रेल्स ट्रांज़ैक्शन में महारत हासिल करें: 5 आवश्यक डिज़ाइन अभ्यास

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

हालांकि, ट्रांज़ैक्शन आपके एप्लिकेशन को नुकसान भी पहुंचा सकते हैं - या यहां तक कि आपके पूरे डेटाबेस को भी गिरा सकते हैं - जब सही ढंग से डिज़ाइन नहीं किया गया हो।

यह लेख ट्रांज़ैक्शन के साथ काम करने के लिए अच्छे अभ्यासों का एक सेट प्रदान करता है। टिप्स काफी सरल हैं, लेकिन वे आपके ट्रांज़ैक्शन को बुलेटप्रूफ, पठनीय और अपेक्षाकृत सुरक्षित बनाने में मदद करेंगे।

आइए गोता लगाते हैं!

1. जब संभव हो तो रेल्स में बैंग मेथड्स का उपयोग करें

रेल्स में, ! वाले मेथड वर्जन आपको विश्वास दिला सकते हैं कि जब कुछ गलत होता है तो एक एरर उठाई जाएगी।

उदाहरण के लिए, #save मेथड save! वर्जन में भी मौजूद है। आप कंट्रोलर में इस वर्जन का उपयोग करना चाह सकते हैं यदि आप कोई एरर नहीं उठाना चाहते:



उपरोक्त दृष्टिकोण ट्रांज़ैक्शन में अच्छा काम नहीं करेगा। save का उपयोग करके, हम प्रक्रिया को वापस नहीं ले सकते जब एरर उठाई जाती है। इसलिए ! वर्जन के मेथड्स का उपयोग करना इतना महत्वपूर्ण है:



उपरोक्त में, ट्रांज़ैक्शन सफल होता है भले ही सदस्यता रिकॉर्ड नहीं बनाया गया हो, और हम डेटाबेस में एक गड़बड़ डेटा संरचना के साथ समाप्त होते हैं।

यदि आप निम्न वर्जन का उपयोग करते हैं, तो ट्रांज़ैक्शन ActiveRecord::RecordNotSaved एरर के कारण वापस लौट जाता है:



2. रेल्स ट्रांज़ैक्शन में एरर्स को सही ढंग से संभालें

जब ट्रांज़ैक्शन में एरर्स की बात आती है, तो कुछ नियम हैं जिनका आपको सम्मान करना चाहिए। इन नियमों का पालन करके, आपके पास पठनीय और अच्छी तरह से काम करने वाला कोड होगा जो अन्य डेवलपर्स के बीच भ्रम या डीबग करना मुश्किल अजीब व्यवहार नहीं पैदा करेगा।

ActiveRecord::StatementInvalid से रेस्क्यू न करें

ActiveRecord::StatementInvalid एक विशेष एरर है जो तब उठाई जाती है जब डेटाबेस लेवल पर कुछ गलत होता है। इस एरर से कभी रेस्क्यू न करें। आपको हमेशा स्पष्ट रूप से सूचित किया जाना चाहिए जब डेटाबेस क्वेरी के साथ कुछ गलत होता है।

निम्न कोड से बचें:



सही लेवल पर रेस्क्यू का उपयोग करें

यदि आप निम्न लेवल पर रेस्क्यू का उपयोग करते हैं, तो आप एरर को पकड़ लेंगे:



ट्रांज़ैक्शन वापस नहीं लौटता क्योंकि आपने एरर को पकड़ लिया। एरर को उठने दें और इसे ट्रांज़ैक्शन ब्लॉक के बाहर पकड़ें:



उपरोक्त दृष्टिकोण में, एरर के मामले में ट्रांज़ैक्शन वापस लौटता है, और आप एरर को पकड़ते हैं। यह ट्रांज़ैक्शन व्यवहार को ओवरराइट किए बिना ट्रांज़ैक्शन के अंदर उठाई गई एरर्स को पकड़ने का सही दृष्टिकोण है।

जेनेरिक एरर्स को न पकड़ें

आपको StandardError या ArgumentError जैसी जेनेरिक एरर्स को पकड़ने से बचना चाहिए। यह पठनीय और आसानी से टेस्टेबल कोड के लिए एक सामान्य नियम की तरह है, लेकिन यह उल्लेख करने लायक है।

इन एरर्स को पकड़ना डीबगिंग को कठिन बना सकता है, क्योंकि कोड में अन्य स्थान एरर्स उठा सकते हैं। यह आपके ऐप में कुछ गंभीर मुद्दों को चुप करा सकता है जो उस स्थान से जरूरी नहीं संबंधित हैं जहां आप उन्हें रेस्क्यू करते हैं।

ActiveRecord के डिफ़ॉल्ट रोलबैक एरर का बुद्धिमानी से उपयोग करें

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

3. जानें कि रेल्स में ट्रांज़ैक्शन का उपयोग कब टालना है

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

एक और आम गलती अपने डेटाबेस कॉल से असंबंधित कोड को ट्रांज़ैक्शन में लपेटना है। आपको ऐसे दृष्टिकोण से बचना चाहिए, क्योंकि ट्रांज़ैक्शन कनेक्शन को तब तक होल्ड करेगा जब तक ब्लॉक के अंदर का कोड निष्पादित नहीं होता। यदि संभव हो तो ब्लॉक के अंदर के कोड को केवल अपने डेटाबेस को कॉल करने तक सीमित रखें।

4. ट्रांज़ैक्शन के नुकसान को समझें

ट्रांज़ैक्शन डेटाबेस के अंदर डेटा अखंडता बनाए रखने में मदद करते हैं, लेकिन आपको उनके नुकसान के बारे में भी पता होना चाहिए। उदाहरण के लिए, ट्रांज़ैक्शन ब्लॉक में लपेटी गई क्वेरीज़ सिंगल क्वेरीज़ की तुलना में अधिक DB संसाधन लेती हैं।

ट्रांज़ैक्शन का उपयोग करने का एक और नुकसान यह है कि यह अधिक जटिल कोड की ओर ले जाता है। गलत तरीके से उपयोग किए जाने पर ट्रांज़ैक्शन आपके कोड को कम पठनीय बना सकते हैं।

5. सही संदर्भ में ट्रांज़ैक्शन ब्लॉक का उपयोग करें

जब कोई क्लास ActiveRecord क्लास से विरासत में मिली हो तो आप ट्रांज़ैक्शन मेथड का उपयोग कर सकते हैं। इसका मतलब यह नहीं है कि आप जिस वर्जन का उपयोग करते हैं वह मायने नहीं रखता। हालांकि यह कार्यात्मक दृष्टिकोण से मायने नहीं रख सकता, यह आपके कोड को पठनीय बनाने के संदर्भ में मायने रखता है।

ट्रांज़ैक्शन मेथड का उपयोग करने वाले तीन सामान्य वर्जन हैं:



जब आप कई मॉडल्स का उपयोग करते हैं और एक ब्लॉक के अंदर इंस्टेंस मेथड इनवोकेशन को क्लासेस के साथ मिलाते हैं, तो आपको ActiveRecord::Base.transaction का उपयोग करना चाहिए:



यदि आप ज्यादातर कोड से निपटते हैं जो एक दिए गए मॉडल से संबंधित है, तो क्लास पर ट्रांज़ैक्शन मेथड को इनवोक करें:



जब आप एक मॉडल इंस्टेंस पर ऑपरेट करते हैं, तो इंस्टेंस लेवल पर ट्रांज़ैक्शन मेथड को इनवोक करना समझ में आता है:



बेशक, ये नियम आधिकारिक नहीं हैं। वे सिर्फ कोड को अधिक पठनीय बनाने के सुझाव हैं।

अगले कदम: अपने रूबी ऑन रेल्स प्रोजेक्ट में ट्रांज़ैक्शन की समीक्षा करें

मुझे आशा है कि आपको रूबी ऑन रेल्स में ट्रांज़ैक्शन के साथ काम करने के लिए ये टिप्स उपयोगी लगे होंगे।

हमने रेल्स ट्रांज़ैक्शन को सही ढंग से डिज़ाइन करने के महत्व को कवर किया है ताकि डेटा अखंडता में सुधार हो और यह सुनिश्चित हो सके कि आपकी प्रक्रियाएं आश्चर्यजनक साइड इफेक्ट्स के बिना प्रदर्शन करती हैं।

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

अब आपके रूबी ऑन रेल्स प्रोजेक्ट डिज़ाइन में ट्रांज़ैक्शन की समीक्षा करने का एक उत्कृष्ट समय है ताकि एरर्स से बचा जा सके। अपने डेटाबेस के साथ कुशल और विश्वसनीय संचार के लिए डिज़ाइन करें ताकि आपका एप्लिकेशन अधिक स्थिर हो।

हैप्पी कोडिंग!

P.S. यदि आप रूबी मैजिक पोस्ट्स को प्रेस से निकलते ही पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूजलेटर को सब्सक्राइब करें और कभी भी एक भी पोस्ट मिस न करें!

रूबी ऑन रेल्स ट्रांज़ैक्शन में महारत हासिल करें: 5 आवश्यक डिज़ाइन अभ्यास

पावेल डाब्रोव्स्की

हमारे गेस्ट ऑथर पावेल एक ओपन-सोर्स प्रशंसक और ग्रोथ साधक हैं जिनके पास मनुष्यों और कंप्यूटर्स दोनों के लिए लिखने में एक दशक से अधिक का अनुभव है। वह उच्च गुणवत्ता वाले सॉफ्टवेयर बनाने और लोगों और व्यवसायों के साथ मूल्यवान संबंध बनाने के लिए डॉट्स कनेक्ट करते हैं।

पावेल डाब्रोव्स्की के सभी लेख


  1. Python में Selenium WebDriver का उपयोग करके आंशिक स्क्रीनशॉट कैसे लें? Python में Selenium WebDriver का उपयोग करके आंशिक स्क्रीनशॉट कैसे लें?

    हम Selenium WebDriver के साथ आंशिक स्क्रीनशॉट ले सकते हैं। किसी विशेष एलिमेंट का स्क्रीनशॉट कैप्चर करने के लिए हमें पहले id, name, classname जैसे लोकेटर की मदद से एलिमेंट की पहचान करनी होगी। फिर हमें उस वेबएलिमेंट पर screenshot मेथड लागू करना होगा और मेथड के आर्गुमेंट के रूप में एक्सटेंशन के साथ इ

  1. HTML DOM Style backgroundClip प्रॉपर्टी HTML DOM Style backgroundClip प्रॉपर्टी

    backgroundClip प्रॉपर्टी हमें यह नियंत्रित करने देती है कि पृष्ठभूमि छवि कितनी दूर तक चित्रित होगी यानी पृष्ठभूमि छवि का पेंटिंग क्षेत्र। इसका उपयोग उस पेंटिंग क्षेत्र को सेट या प्राप्त करने के लिए किया जाता है। सिंटैक्स backgroundClip प्रॉपर्टी सेट करने के लिए सिंटैक्स निम्नलिखित है: background-cl

  1. Ruby on Rails में Simple Form के साथ फॉर्म निर्माण में महारत हासिल करना Ruby on Rails में Simple Form के साथ फॉर्म निर्माण में महारत हासिल करना

    रूबी ऑन रेल्स ने वेब एप्लिकेशन बनाने के तरीके को बदल दिया है। शुरुआत में, फ्रेमवर्क कुछ बेहतरीन फीचर्स के साथ आया जो आपको शुरू करने और मजबूत एप्लिकेशन बनाने में मदद करते हैं। फिर भी, फॉर्म बनाना और संभालना अभी भी मुश्किल हो सकता है। Simple Form एक बढ़िया विकल्प है। आइए देखें कि Simple Form क्या है,