सबसे अच्छे रूबी रत्न कौन से हैं जिनका उपयोग आप अपनी रेल परियोजनाओं में कर सकते हैं?
इस लेख में आप यही पाएंगे!
मैं आपको 7 रत्न देने जा रहा हूँ, लेकिन वह पुराने रत्न नहीं जिन्हें आपने लाखों बार देखा है , मैं आपके साथ कुछ रत्न साझा करने जा रहा हूँ जो बहुत उपयोगी हैं, लेकिन कम ज्ञात हैं।
लेकिन इससे पहले कि हम ऐसा करें...
एक चेतावनी।
मैंने ऐसे डेवलपर देखे हैं जो लगभग हर चीज़ के लिए एक रत्न लेते हैं।
अगर यह दूर से लगता है कि यह मददगार हो सकता है।
यह सोचने के लिए एक पल के बिना कि क्या वह रत्न उनकी समस्या का समाधान करता है, यदि यह सबसे अच्छा विकल्प है, अच्छी तरह से बनाए रखा और प्रलेखित, आदि।
यह एक गलती है।
क्यों?
क्योंकि आपका प्रोजेक्ट जितनी अधिक चीजों पर निर्भर करता है, चीजों के बदलने पर उसके टूटने की संभावना उतनी ही अधिक होती है।
और चीजें हर समय बदलती रहती हैं।
नया रेल संस्करण, नया रूबी संस्करण, नई सुविधाएँ, आदि।
उसके साथ…
रत्न आपको बहुत काम बचा सकते हैं, आपके कोड को साफ करने में मदद कर सकते हैं, और सुरक्षा समस्याओं से बच सकते हैं, इसलिए उनका बुद्धिमानी से उपयोग करें!
अब :
आइए सूची में शामिल हों।
<एच2>1. अपने कोड को साफ रखने के लिए डेड रूट खोजेंजैसे-जैसे आपका रेल एप्लिकेशन बढ़ता है, आप अधिक से अधिक मार्ग जमा करते जाएंगे।
आप कोड बदल देंगे और इन मार्गों में से कुछ पुराने हो जाएंगे ।
अब जरूरत नहीं...
लेकिन वे वहीं रहेंगे, आपके config/routes.rb
. में , इसे प्रबंधित करना कठिन बना देता है।
आप कैसे ढूंढते हैं कि किन मार्गों को हटाना है?
traceroute
. नाम का एक रत्न होता है ।
यह आपके मार्गों को लोड करता है और उनकी तुलना आपके द्वारा निर्धारित नियंत्रक क्रियाओं से करता है।
लेकिन अभी इसकी दो सीमाएँ हैं :
- यह रेल 6 के साथ काम नहीं करता
- यह निहित नियंत्रक क्रियाओं का पता नहीं लगाता है
मैंने रेल 6 समर्थन जोड़ने के लिए एक पुल अनुरोध भेजा, लेकिन मैं अपने स्वयं के संस्करण के साथ आया जिसमें ये सीमाएं नहीं हैं।
आप इसे यहां पा सकते हैं।
2. अपने प्रवास को सुरक्षित बनाएं ताकि आप समस्याओं से बच सकें
अगर गलत तरीके से किया गया तो रेल प्रवास बहुत सारी समस्याएं पैदा कर सकता है।
उदाहरण के लिए :
कॉलम को हटाने से समस्या हो सकती है क्योंकि रेल में कॉलम का कैश होता है, और माइग्रेशन चलाने से यह कैश रीसेट नहीं होता है।
एक और उदाहरण :
यदि आप एक इंडेक्स जोड़ते हैं और आप PostgreSQL चला रहे हैं तो ऑपरेशन पूरा होने तक पूरी टेबल लॉक हो जाती है।
आपके उपयोगकर्ताओं के लिए अच्छा नहीं है।
आपका एप्लिकेशन उन अनुरोधों का जवाब नहीं दे पाएगा जिन्हें लॉक टेबल के साथ काम करने की आवश्यकता है।
खुशखबरी?
आपको इन सभी चीजों को याद रखने की जरूरत नहीं है।
strong_migrations
. की सहायता से मणि, उत्पादन में आने से पहले आपको पता चल जाएगा कि आपके पास इनमें से एक असुरक्षित माइग्रेशन कब होगा।
3. असुरक्षित लेन-देन रोकें
एक रेल लेनदेन को "सभी या कुछ भी नहीं" ऑपरेशन माना जाता है।
ऐसा दिखता है :
Book.transaction do # ... end
लेकिन अगर आप ऐसे काम करते हैं जो transaction
से बाहर हैं नियंत्रण, जैसे किसी फ़ाइल को लिखना, या API अनुरोध करना, तो यह "सभी या कुछ भी नहीं" प्रभाव अब सत्य नहीं है।
जैसा कि आप कल्पना कर सकते हैं, यह सभी प्रकार के मुद्दों की ओर ले जाता है।
समाधान क्या है?
बहुत हाई-टेक नहीं, वास्तव में, केवल "दुष्प्रभाव" से बचें, या ऐसे काम करने से बचें जो लेनदेन की "बाहरी दुनिया" को प्रभावित करते हैं।
आइसोलेटर रत्न इसमें मदद कर सकता है।
यह सुनिश्चित करने के लिए आपके सभी लेन-देन का ऑडिट करता है कि वे सुरक्षित हैं।
आपको केवल मणि को स्थापित करना है, फिर जब यह एक खराब transaction
का पता लगाता है यह एक अपवाद उठाएगा।
इसे आज़माएं!
4. अपने धीमे परीक्षण ढूंढें और उन्हें तेज़ बनाएं
धीमे परीक्षण मज़ेदार नहीं हैं।
लेकिन आपके परीक्षण धीमे क्यों हैं, इसका पता लगाने में आपकी मदद करने के लिए कुछ टूल हैं ताकि आप उन्हें ठीक कर सकें!
इनमें से एक टूल test-prof
. का संयोजन है + ruby-prof
।
यहां इसका उपयोग करने का तरीका बताया गया है :
TEST_RUBY_PROF=1 rake
आउटपुट :
%self total self wait child calls name 43.21 2.001 2.001 0.000 0.000 1 Kernel#sleep 2.97 0.184 0.138 0.000 0.046 1640 Array#permutation 1.39 0.064 0.064 0.000 0.000 144 PG::Connection#async_exec
यहां मैं sleep
. के लिए अपना कॉल स्पष्ट रूप से देख सकता हूं , लेकिन यह आसानी से एक API कॉल हो सकता है, एक बड़ी फ़ाइल पढ़ना, एक धीमी SQL क्वेरी, आदि।
एक और चीज जो आप कर सकते हैं वह है इवेंट प्रोफाइलर का उपयोग करना।
इसे पसंद करें :
EVENT_PROF='sql.active_record' EVENT_PROF_EXAMPLES=1 rake
इससे आपको यह पता लगाने में मदद मिलती है कि कौन से परीक्षण सबसे धीमी क्वेरी चला रहे हैं।
बीटीडब्ल्यू, रेल 6 ने समानांतर परीक्षण जोड़ा, आपको इसे test/test_helpers.rb
में सक्षम करना होगा यदि आप अपने वर्तमान प्रोजेक्ट को अपग्रेड कर रहे हैं।
5. अपने डेटा को अधिक सुसंगत बनाएं
सत्यापन बहुत अच्छे हैं।
लेकिन इससे कोई फर्क नहीं पड़ता कि आप अपना वेब एप्लिकेशन बनाने के लिए किस ढांचे का उपयोग कर रहे हैं।
आप डेटाबेस में सीधे डेटा आयात करके, कच्चे SQL का उपयोग करके रिकॉर्ड बनाकर, या अपने ORM में किसी ऐसी विधि का उपयोग करके अपने सत्यापन को बायपास कर सकते हैं जो सत्यापन को छोड़ देता है।
दूसरे शब्दों में…
आपकी मान्यताएं आपको केवल उपयोगकर्ता त्रुटि से बचाती हैं, लेकिन डेवलपर त्रुटि से नहीं।
ये डेवलपर त्रुटियां आपके डेटा को असंगत बना सकती हैं।
खुशखबरी?
अधिकांश - यदि सभी नहीं - आधुनिक SQL डेटाबेस "बाधाओं" को लागू करते हैं, सत्यापन जैसे नियमों का एक सेट, लेकिन डेटाबेस स्तर पर।
इसलिए यदि आप अपनी डेटा स्थिरता बढ़ाना चाहते हैं तो आप इन बाधाओं को लागू करना चाहते हैं।
एक रत्न जो आपकी मदद कर सकता है वह है database_consistency.
इस रत्न का उपयोग कैसे करें?
सबसे पहले, आपको इसे स्थापित करने की आवश्यकता है, वहां कोई रहस्य नहीं है।
दूसरा, आप bundle exec database_consistency
चलाते हैं टर्मिनल में, उस प्रोजेक्ट के अंदर जिसे आप देखना चाहते हैं।
यह इस तरह की रिपोर्ट तैयार करेगा :
fail Comment title column should be required in the database fail Comment author column should be required in the database
आगे क्या है?
एक change_column_null
के साथ अनुपलब्ध डेटाबेस बाधाओं को जोड़ें, इस मामले में, नॉट-नल प्रवास।
6. रिफैक्टरिंग का समय! आपके कोड में सबसे खराब अपराधी कौन हैं?
अपना कोड सुधारना चाहते हैं, लेकिन सुनिश्चित नहीं हैं कि कहां से शुरू करें?
कुछ मीट्रिक प्राप्त करें!
कई कोड मेट्रिक्स हैं, जैसे चक्रीय जटिलता और मंथन। मंथन आपके कोड में समय के साथ परिवर्तन की दर को देखता है।
कैसे?
अपने git परिवर्तन इतिहास का उपयोग करना।
परिणाम?
उन फ़ाइलों की सूची जो सबसे अधिक बदलती हैं।
अगर आप अपना 90% समय अपना User
. बदलने में लगाते हैं मॉडल... यह शायद लंबी विधियों वाली एक बड़ी फ़ाइल है। रिफैक्टरिंग के लिए एक बढ़िया उम्मीदवार!
एक रत्न जो आपको लगातार बदलती इन फ़ाइलों को खोजने में मदद करता है उसे attractor
. कहा जाता है ।
इसे इस तरह चलाएं :
attractor report -p app
यह एक HTML रिपोर्ट और उच्च-मंथन फ़ाइलों की एक सूची तैयार करता है जिसका उपयोग आप अपने रिफैक्टरिंग प्रयासों पर ध्यान केंद्रित करने के लिए कर सकते हैं।
अच्छा सामान!
7. पता करें कि कौन सा कोड उत्पादन में उपयोग किया जाता है और कौन सा नहीं
अपना कोड सुधारने में आपकी सहायता के लिए एक अन्य टूल के साथ समाप्त करते हैं।
इसे कहते हैं coverband
।
यदि आप इस रत्न को उत्पादन (कम ओवरहेड) में चलाते हैं, तो आपको एक कवरेज रिपोर्ट मिलेगी कि कौन सा कोड चलाया जा रहा है।
आप अप्रयुक्त दृश्यों को भी ट्रैक कर सकते हैं!
यह आपको कोड हटाने और अपने प्रोजेक्ट को साफ करते समय निर्णय लेने में मदद कर सकता है।
अप्रयुक्त कोड को बनने न दें!
सारांश
आपने 7 शक्तिशाली और अल्पज्ञात रूबी रत्नों के बारे में सीखा है जिनका उपयोग आप अपनी (ज्यादातर रेल) परियोजनाओं में अपने परीक्षणों को तेज करने, अपने कोड को बेहतर बनाने और सुरक्षा बढ़ाने के लिए कर सकते हैं।
रत्नों के दुरुपयोग के बारे में थोड़ी सी चेतावनी याद रखें, लेकिन नए रत्नों को आज़माने से आपको पीछे न हटने दें।
<ब्लॉकक्वॉट>यदि आप अपने रूबी कौशल में सुधार करना चाहते हैं और ब्लॉग का समर्थन करना चाहते हैं, तो मेरी रूबी पुस्तक, रूबी डीप डाइव की एक प्रति खरीदने पर विचार करें।
पढ़ने के लिए धन्यवाद!