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

RubyGems के अंदर: क्लासिक इंस्टॉलेशन से आधुनिक विकास तक

बच्चों इकट्ठा हो जाओ, और दादाजी को पुराने दिनों के तरीके सुनाओ जब जीवन कठिन था, और जेम्स इंस्टॉल करना सिरदर्द पैदा करने वाला, बाल खींचने वाला, दांत पीसने वाला अनुभव था।

जब मैं रूबी में बस शुरू कर रहा था, तब कोई बंडलर नहीं था और जेम्स को कठिन तरीके से इंस्टॉल करना पड़ता था। रेल्स में, इसका मतलब था rake gems:install को लाखों बार चलाना, रास्ते में आने वाले बग्स को ठीक करना, जब तक कि कमांड बिना त्रुटियों के पास न हो जाए। आज, हम पुराने स्कूल के तरीके से एक जेम बनाने जा रहे हैं, यह देखने के बाद कि जेम्स क्या हैं और वे कैसे काम करते हैं।

जेम्स, वे क्या हैं?

RubyGems अन्य लोगों द्वारा लिखी गई कार्यक्षमता के साथ अपने स्वयं के कोड को विस्तारित करने का एक आसान तरीका है। उदाहरण के लिए, अपने स्वयं के प्रमाणीकरण/प्राधिकरण कोड को लिखने के बजाय, आप Devise का उपयोग कर सकते हैं, या यदि आप अपलोड की गई छवियों का आकार बदलना चाहते हैं तो आप CarrierWave का उपयोग कर सकते हैं। यह आपको पुन: प्रयोज्य कोड लिखने की अनुमति देता है जिसे आप अन्य लोगों के साथ साझा कर सकते हैं।

लेकिन वे कैसे काम करते हैं?

अपने सबसे बुनियादी रूप में, एक जेम कोड युक्त एक डायरेक्टरी से ज्यादा कुछ नहीं है जिसे ज़िप किया गया है और एक <name>.gemspec फाइल। यह .gemspec फाइल जेम के बारे में मेटाडेटा रखती है जैसे इसका नाम, कौन सी फाइलें लोड करनी हैं और इसकी निर्भरताएं।

gem install या bundle कमांड सोर्स से ज़िप फाइल डाउनलोड करती है और इसे आपकी हार्ड ड्राइव पर निकालती है। आप bundle info <gem name> चलाकर या सीधे bundle open <gem name> चलाकर जेम डायरेक्टरी खोलकर पता लगा सकते हैं कि जेम कहां स्थित है।

जेम को अपने एप्लिकेशन में लोड करने के लिए, RubyGems Kernel क्लास में require फ़ंक्शन को मंकी-पैच करता है। यह पहले डिस्क से फाइल को पढ़ने की कोशिश करता है और अगर वह काम नहीं करता है, तो यह आपके सिस्टम पर प्रत्येक जेम में फाइल को हल करने की कोशिश करता है। एक बार जब यह फाइल को एक जेम में ढूंढ लेता है तो यह जेम को "सक्रिय" करता है इसे लोड पथ में जोड़कर।

यदि आप बंडलर का उपयोग करते हैं, तो यह setup कॉल के दौरान प्रत्येक विशिष्ट जेम को लोड पथ में जोड़ता है। यह RubyGems को पथों को हल करने की परेशानी से बचाता है। यह रूबी को Gemfile(.lock) में चयनित संस्करण से अलग जेम के संस्करण को लोड करने से भी रोकता है।

मैं एक कैसे बना सकता हूँ?

अपना स्वयं का जेम बनाने का सबसे आसान तरीका बंडलर का उपयोग करके जेम स्कैफोल्ड जेनरेट करना है। इसमें जेम के लिए उचित डायरेक्टरी संरचना, लाइसेंस, आचार संहिता और टेस्ट वातावरण शामिल है।

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

mkdir howdy cd howdy

इस डायरेक्टरी में, हम कोड युक्त एक lib फोल्डर और मेटाडेटा युक्त एक howdy.gemspec फाइल बनाएंगे। यह कुछ इस तरह दिखना चाहिए:

tree . ├── howdy.gemspec └── lib └── howdy.rb

हमारे howdy जेम में निम्न कोड है:

lib/howdy.rb

class Howdy def greet "howdy!" end end

एक न्यूनतम howdy.gemspec फाइल में संस्करण, लेखक, आदि के बारे में जानकारी होती है। यह जेम बनाते समय रखी जाने वाली फाइलों को भी निर्दिष्ट करता है। यह जेम के उपयोगकर्ताओं को टेस्ट और अन्य फाइलें डाउनलोड करने से रोकता है जो जेम कोड चलाने के लिए आवश्यक नहीं हैं।

Gem::Specification.new do |spec| spec.name = "howdy" spec.version = "0.0.1" spec.authors = ["Robert Beekman"] spec.email = ["robert@example.com"] spec.summary = %(Greets the user) spec.description = %(Howdy is a gem that greets the user when called) spec.license = "MIT" spec.files = ["lib/howdy.rb"] end

जेम बनाने के लिए हम gem build howdy.gemspec कमांड का उपयोग कर सकते हैं। यह आपके कोड युक्त एक howdy-0.0.1.gem फाइल उत्पन्न करता है। जेम को अन्य लोगों के लिए उपलब्ध कराने के लिए, आप इसे gem publish कमांड के साथ rubygems.org पर प्रकाशित कर सकते हैं।

रिकैप

ये बहुत ही बुनियादी जेम बनाने और प्रकाशित करने के लिए आवश्यक कदम हैं। हम आशा करते हैं कि आपको जेम्स के पुरातत्व में हमारे गोता लगाने का आनंद आया, और उन्हें बनाने का पुराना स्कूल तरीका। जैसा कि पहले उल्लेख किया गया है यह शैक्षिक उद्देश्यों के लिए था; हम आज की दुनिया में जेम स्कैफोल्ड जेनरेट करने के लिए बंडलर का उपयोग करने की सलाह देते हैं।

शांति, युवाओं! यदि आपके कोई विचार, प्रश्न या टिप्पणी हैं, तो कृपया हमें बताने में संकोच न करें।

  1. Ruby on Rails के लिए पर्यावरण चर में महारत हासिल करें: एक पूर्ण गाइड Ruby on Rails के लिए पर्यावरण चर में महारत हासिल करें: एक पूर्ण गाइड

    यदि आप विकास और प्रोडक्शन में वेब ऐप्स को प्रभावी ढंग से प्रबंधित करना चाहते हैं, तो आपको पर्यावरण चर को समझना होगा। यह हमेशा ऐसा नहीं था। कुछ साल पहले, शायद ही कोई अपने Rails ऐप्स को पर्यावरण चर के साथ कॉन्फ़िगर कर रहा था। लेकिन फिर Heroku हुआ। Heroku ने डेवलपर्स को 12-फैक्टर ऐप दृष्टिकोण से परिचित

  1. रूबी में VCR में महारत हासिल करें: टेस्ट परफॉरमेंस और विश्वसनीयता बढ़ाएं रूबी में VCR में महारत हासिल करें: टेस्ट परफॉरमेंस और विश्वसनीयता बढ़ाएं

    यदि आपका रूबी एप्लिकेशन किसी भी प्रकार के एक्सटर्नल API का उपयोग करता है तो आपने शायद धीमे टेस्ट्स और API रेट लिमिट्स की समस्या का सामना किया होगा। समाधान क्या है? आप अपने क्लाइंट लाइब्रेरी से HTTP मेथड्स को मैन्युअली स्टब कर सकते हैं, और कुछ पूर्व-निर्धारित प्रतिक्रियाएं वापस कर सकते हैं। लेकिन यह

  1. रूबी में AASM के साथ स्टेट मशीन्स में महारत हासिल करें: एक व्यावहारिक गाइड रूबी में AASM के साथ स्टेट मशीन्स में महारत हासिल करें: एक व्यावहारिक गाइड

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