Ruby on Rails
रत्न
खोज…
टिप्पणियों
जेमफाइल डॉक्यूमेंटेशन
उन परियोजनाओं के लिए, जिनके बढ़ने की उम्मीद है, यह एक अच्छा विचार है जो आपकी Gemfile
टिप्पणियों को Gemfile
। इस तरह, बड़े सेटअपों में भी आपको पता चल जाएगा कि प्रत्येक रत्न क्या करता है, भले ही नाम स्व-व्याख्यात्मक न हो और आपने इसे 2 साल पहले जोड़ा हो।
यह आपको यह याद रखने में भी मदद कर सकता है कि आपने एक निश्चित संस्करण क्यों चुना और परिणामस्वरूप बाद में संस्करण की आवश्यकता का फिर से मूल्यांकन किया।
उदाहरण:
# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'
मणि क्या है?
एक मणि एक प्लगइन या प्रोग्रामिंग भाषा रूबी के लिए एक विस्तार के बराबर है।
सटीक होने के लिए भी रेल एक रत्न से ज्यादा कुछ नहीं है। बहुत सारे रत्न रेल या अन्य रत्नों पर निर्मित होते हैं (वे उक्त मणि के आश्रित होते हैं) या स्वसंपूर्ण होते हैं।
आपकी रेल परियोजना में
Gemfile
आपके रेल प्रोजेक्ट के लिए आपके पास Gemfile
नामक एक फाइल है। यहां आप उन रत्नों को जोड़ सकते हैं जिन्हें आप अपनी परियोजना में शामिल करना और उपयोग करना चाहते हैं। एक बार आपको bundler
( bundler
अनुभाग देखें) का उपयोग करके मणि स्थापित करने की आवश्यकता है।
Gemfile.lock
एक बार जब आप ऐसा कर लेते हैं, तो आपका Gemfile.lock
आपके नए जोड़े गए रत्नों और उनकी निर्भरता के साथ अपडेट हो जाएगा। यह फ़ाइल आपके उपयोग किए गए रत्नों को बंद कर देती है ताकि वे उस फ़ाइल में घोषित विशिष्ट संस्करण का उपयोग करें।
GEM
remote: https://rubygems.org/
specs:
devise (4.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
responders
warden (~> 1.2.3)
यह उदाहरण मणि devise
। Gemfile.lock
में संस्करण 4.0.3
घोषित किया गया है, यह बताने के लिए कि किसी अन्य मशीन पर या अपने उत्पादन सर्वर पर अपनी परियोजना स्थापित करते समय कौन सा संस्करण उपयोग करने के लिए निर्दिष्ट किया गया था।
विकास
या तो एक व्यक्ति, एक समूह या एक पूरा समुदाय काम करता है और एक मणि बनाए रखता है। आमतौर पर किए गए काम कुछ issues
तय होने या features
को जोड़ने के बाद जारी किए जाते issues
।
आमतौर पर रिलीज़ सिमेंटिक वर्जन 2.0.0 सिद्धांत का पालन करते हैं।
बंडलर
bundler
का उपयोग करके रत्नों को संभालने और प्रबंधित करने का सबसे आसान तरीका है। बुंडलर बोवर की तुलना में एक पैकेज मैनेजर है।
बंडल का उपयोग करने के लिए आपको पहले इसे स्थापित करना होगा।
gem install bundler
आपके द्वारा Gemfile
और चलाने के बाद आपको अपने रत्न और रत्नों को जोड़ने की आवश्यकता है
bundle
अपने टर्मिनल में। यह आपके नए जोड़े गए रत्नों को आपकी परियोजना में स्थापित करता है। यदि कोई समस्या उत्पन्न होती है, तो आपको अपने टर्मिनल में एक संकेत मिलेगा।
यदि आप अधिक जानकारी में रुचि रखते हैं, तो मेरा सुझाव है कि आप डॉक्स पर एक नज़र डालें।
Gemfiles
शुरू करने के लिए, रुबाइम्स सर्वर के लिए यूआरएल के रूप में जेमफाइल्स को कम से कम एक स्रोत की आवश्यकता होती है।
bundle init
चलाकर डिफ़ॉल्ट rubygems.org स्रोत के साथ एक जेफाइल बनाएं। Https का उपयोग करें ताकि सर्वर से आपका कनेक्शन SSL से सत्यापित हो जाए।
source 'https://rubygems.org'
इसके बाद, उन रत्नों की घोषणा करें, जिनकी आपको आवश्यकता है, जिसमें संस्करण संख्याएँ भी शामिल हैं।
gem 'rails', '4.2.6'
gem 'rack', '>=1.1'
gem 'puma', '~>3.0'
अधिकांश संस्करण विनिर्देशक, जैसे> = 1.0, स्व-व्याख्यात्मक हैं। विनिर्देशक ~> का एक विशेष अर्थ है। ~> 2.0.3> = 2.0.3 और <2.1 के समान है। ~> 2.1> = 2.1 और <3.0 के समान है। ~> 2.2.beta 2.2.beta.12 की तरह प्रीलेरेज़ संस्करणों से मेल खाएगी।
गिट रिपॉजिटरी भी मान्य रत्न स्रोत हैं, जब तक कि रेपो में एक या अधिक वैध रत्न शामिल हैं। निर्दिष्ट करें :tag
:branch
, या :ref
साथ क्या देखना है। डिफ़ॉल्ट master
शाखा है।
gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'
यदि आप सीधे फाइलसिस्टम से एक अनपैक्ड रत्न का उपयोग करना चाहते हैं, तो बस पथ का विकल्प निर्धारित करें: जिसमें मणि की फाइलें हैं।
gem 'extracted_library', :path => './vendor/extracted_library'
निर्भरता को समूहों में रखा जा सकता है। (का उपयोग करते हुए समूह स्थापित होने पर ही अनदेखा किया जा सकता --without
) या एक बार (का उपयोग करके सभी आवश्यक Bundler.require
)।
gem 'rails_12factor', group: :production
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
gem 'dotenv-rails'
end
आप ruby
साथ जेमफाइल में रूबी के आवश्यक संस्करण को निर्दिष्ट कर सकते हैं। अगर Gemfile को एक अलग Ruby संस्करण पर लोड किया गया है, तो Bundler एक स्पष्टीकरण के साथ एक अपवाद बढ़ाएगा।
ruby '2.3.1'
Gemsets
यदि आप RVM(Ruby Version Manager)
का उपयोग कर रहे हैं तो प्रत्येक प्रोजेक्ट के लिए एक gemset
का उपयोग करना एक अच्छा विचार है। एक gemset
सिर्फ एक कंटेनर है gemset
उपयोग आप एक दूसरे से रत्नों को अलग रखने के लिए कर सकते हैं। प्रति प्रोजेक्ट एक gemset
बनाना आपको अपने सभी अन्य परियोजनाओं को तोड़ने के बिना एक परियोजना के लिए रत्न (और रत्न संस्करण) को बदलने की अनुमति देता है। प्रत्येक परियोजना को केवल अपने स्वयं के रत्नों की चिंता करने की आवश्यकता है।
RVM
प्रदान करता है (> = 0.1.8) एक @global gemset
प्रति रूबी दुभाषिया। दिए गए माणिक के लिए आप @global gemset
रत्न स्थापित करते हैं, जो आप उस माणिक के साथ मिलकर बनाते हैं। यह आपकी सभी परियोजनाओं को एक विशिष्ट रूबी दुभाषिया स्थापना के लिए एक ही स्थापित मणि साझा करने की अनुमति देने का एक अच्छा तरीका है।
रत्नों का निर्माण
मान लीजिए कि आपके पास पहले से ruby-2.3.1
स्थापित है और आपने इसे इस कमांड का उपयोग करके चुना है:
rvm use ruby-2.3.1
अब इस रूबी संस्करण के लिए रत्न बनाने के लिए:
rvm gemset create new_gemset
जहाँ new_gemset
का नाम है। माणिक संस्करण के लिए उपलब्ध रत्नों की सूची देखना:
rvm gemset list
सभी रूबी संस्करणों के जवाहरात सूचीबद्ध करने के लिए:
rvm gemset list_all
सूची से एक रत्न का उपयोग करने के लिए (मान लीजिए new_gemset
वह new_gemset
है जिसका मैं उपयोग करना चाहता हूं):
rvm gemset use new_gemset
यदि आप किसी अन्य रूबी संस्करण में स्थानांतरित करना चाहते हैं, तो आप रत्न के साथ माणिक संस्करण भी निर्दिष्ट कर सकते हैं:
rvm use ruby-2.1.1@new_gemset
एक विशेष रूबी संस्करण के लिए एक डिफ़ॉल्ट रत्न निर्दिष्ट करने के लिए:
rvm use 2.1.1@new_gemset --default
एक रत्न से सभी स्थापित रत्नों को निकालने के लिए आप इसे खाली कर सकते हैं:
rvm gemset empty new_gemset
एक माणिक से दूसरे माणिक को कॉपी करने के लिए आप इसे कर सकते हैं:
rvm gemset copy 2.1.1@rails4 2.1.2@rails4
एक रत्न को हटाने के लिए:
rvm gemset delete new_gemset
वर्तमान रत्न नाम देखने के लिए:
rvm gemset name
वैश्विक रत्न में एक रत्न स्थापित करने के लिए:
rvm @global do gem install ...
रूबी इंस्टॉल के दौरान आरंभिक रत्न
जब आप एक नया रूबी स्थापित करते हैं, तो आरवीएम न केवल दो रत्न (डिफ़ॉल्ट, खाली रत्न और वैश्विक रत्न) बनाता है, यह निर्धारित करने के लिए उपयोगकर्ता-संपादन योग्य फ़ाइलों का एक सेट भी उपयोग करता है कि कौन से रत्न स्थापित करें।
~/.rvm/gemsets
में काम करते हुए, rvm global.gems
लिए global.gems
और default.gems
रूबी स्ट्रिंग के आधार पर एक पेड़-पदानुक्रम का उपयोग करके स्थापित किया जा रहा है। ree-1.8.7-p2010.02
के उदाहरण का उपयोग करते हुए, ree-1.8.7-p2010.02
निम्नलिखित फाइलों की जांच करेगा (और आयात करेगा):
~/.rvm/gemsets/ree/1.8.7/p2010.02/global.gems
~/.rvm/gemsets/ree/1.8.7/p2010.02/default.gems
~/.rvm/gemsets/ree/1.8.7/global.gems
~/.rvm/gemsets/ree/1.8.7/default.gems
~/.rvm/gemsets/ree/global.gems
~/.rvm/gemsets/ree/default.gems
~/.rvm/gemsets/global.gems
~/.rvm/gemsets/default.gems
उदाहरण के लिए, यदि आपने इन दो पंक्तियों को जोड़कर ~/.rvm/gemsets/global.gems
संपादित किया है:
bundler
awesome_print
हर बार जब आप एक नया माणिक स्थापित करते हैं, तो ये दो रत्न आपके वैश्विक रत्न में स्थापित होते हैं। default.gems
और global.gems
फाइलें आमतौर पर rvm के अपडेट के दौरान अधिलेखित हो जाती हैं।