जब आप Rails ऐप्स बनाते हैं, तो आप ढेर सारे जेम्स का उपयोग करेंगे। उनमें से कुछ पूरी तरह से जादुई लगते हैं! लेकिन वह जादू कैसे होता है?
अधिकांश जेम्स में, ऐसा कुछ भी नहीं है जो वे कर रहे हों जो आप नहीं कर सकते। यह सिर्फ रूबी कोड है। कभी-कभी यह जटिल रूबी कोड होता है। लेकिन यदि आप उस कोड का पता लगाते हैं, तो आप समझना शुरू कर देंगे कि वह जादू कहां से आता है।
स्रोत कोड ढूंढना
यह समझने के लिए कि एक जेम कैसे काम करता है, आपको उसका कोड ढूंढना होगा।
यदि कोई मेथड है जिसके बारे में आप अधिक जानना चाहते हैं, तो आपके पास स्रोत ढूंढने का एक आसान तरीका है: method और source_location। मैंने इसके बारे में पहले थोड़ा लिखा था। यहाँ एक उदाहरण है:
irb(main):001:0> ActiveRecord::Base.method(:find).source_location => ["/usr/local/lib/ruby/gems/2.1.0/gems/ activerecord-4.2.0.beta4/lib/active_record/core.rb", 127]pre>लेकिन क्या होगा यदि आप एक से अधिक मेथड में रुचि रखते हैं?
यदि आपके पास अपने Rails ऐप की डायरेक्टरी के अंदर एक खुला कंसोल है, तो आप सीधे एक जेम के कोड पर जा सकते हैं:
~/Source/gem_example[master] jweiss$ bundle open rackpre>यदि यह आपके
Gemfileमें है, तोbundle open rackपूरेrackजेम को आपके संपादक में खोल देगा। आप इसके अंदर की सभी फ़ाइलों को आराम से ब्राउज़ कर सकते हैं।आप कहां से शुरू करते हैं?
अब जब आप जानते हैं कि जेम का कोड कहां है, तो आप इसे समझना कैसे शुरू करते हैं?
यदि आप
lib/active_record.rbपढ़करactiverecordकैसे काम करता है यह सीखने की कोशिश करते हैं, तो आप कहीं नहीं पहुंचेंगे। आपको बस बहुत सारेautoloadऔरrequireमिलेंगे।एक जेम को समझना सबसे आसान है उसके बाद जब आपका ऐप इसका थोड़ा उपयोग करता है। एक बार जब आप उस तरह के काम के बारे में अधिक जान जाते हैं जो जेम आपके लिए कर रहा है। इस तरह, आपके पास पहले से ही एक विचार होगा कि कौन सी दिलचस्प क्लासेज और मेथड्स से शुरू करना है।
कुछ दिलचस्प मेथड्स के नाम मिलने के बाद, आप
source_location, अपने संपादक में Find in Project, या कमांड लाइन पर ag का उपयोग करके देख सकते हैं कि वे मेथड्स कहां परिभाषित हैं। और यहीं से मज़ा शुरू होता है।जेम का कोड आपकी मशीन पर है, है ना? इसका मतलब है कि आप इसे जैसे चाहें बदल सकते हैं! आप इसे तोड़ भी सकते हैं, और किसी और को पता नहीं चलेगा।
जब मैं यह समझने की कोशिश कर रहा होता हूं कि एक जेम कैसे काम करता है, तो मैं सिर्फ कोड नहीं पढ़ता। मैं जेम में
putsस्टेटमेंट जोड़ता हूं, यह पता लगाने के लिए एक्सेप्शन फेंकता हूं कि मेरा ऐप कुछ लाइनों तक कैसे पहुंचा, और यह समझने के लिए कोड के साथ खिलवाड़ करता हूं कि लेखक ने इसे इस तरह क्यों लिखा।एक बार जब आप जान जाते हैं कि ट्रिक कैसे की जाती है, तो यह बहुत कम जादुई हो जाती है। और आपको यह अनुमान नहीं लगाना पड़ेगा कि वह कोड अजीब स्थितियों में कैसे व्यवहार करेगा, क्योंकि आप इसे स्वयं देख पाएंगे।
अपने बाद सफाई करना
जेम कोड के साथ खिलवाड़ करने के बाद, आपका ऐप बहुत खराब स्थिति में हो सकता है। यह शायद अब चल भी न सके! और यहां तक कि अगर यह चलता है, तो यह उन सभी
putsस्टेटमेंट्स को आपके कंसोल में स्पैम करेगा जो आपने जोड़े थे।लेकिन RubyGems के पास चीजों को सामान्य पर वापस लाने का एक त्वरित तरीका है:
~ jweiss$ gem pristine activerecord -v 4.2.0 Restoring gems to pristine condition... Restored activerecord-4.2.0pre>या, यदि आपको याद नहीं है कि आपने किन जेम्स के साथ खिलवाड़ किया, और आप वास्तव में धैर्यवान हैं:
~ jweiss$ gem pristine --allpre>उसके बाद, आपके सभी जेम्स वैसे ही वापस आ जाएंगे जैसे वे थे जब आपने उन्हें इंस्टॉल किया था।
आप क्या एक्सप्लोर करने जा रहे हैं?
जब आप अपने जेम्स के अंदर के कोड को ढूंढते, पढ़ते, और एक्सप्लोर करते हैं, तो आप उस कोड को गहरे स्तर पर समझेंगे जिस पर आप निर्भर हैं। और आपको अब धारणाओं और अनुमानों पर भरोसा नहीं करना पड़ेगा।
यह पोस्ट मूल रूप से विशेष रूप से मेरी सूची को भेजा गया था। हर शुक्रवार को अपने इनबॉक्स में इस तरह के और पोस्ट प्राप्त करने के लिए, यहां साइन अप करें!