Ruby Language
रत्न उपयोग
खोज…
माणिक रत्न स्थापित करना
यह मार्गदर्शिका मानती है कि आपके पास पहले से ही रूबी स्थापित है। यदि आप रूबी < 1.9
का उपयोग कर रहे हैं, तो आपको रूबीजीम्स को मैन्युअल रूप से स्थापित करना होगा क्योंकि यह मूल रूप से शामिल नहीं किया जाएगा।
माणिक रत्न स्थापित करने के लिए, कमांड दर्ज करें:
gem install [gemname]
यदि आप मणि निर्भरता की सूची के साथ एक परियोजना पर काम कर रहे हैं, तो ये Gemfile
नामक फ़ाइल में सूचीबद्ध Gemfile
। परियोजना में एक नया रत्न स्थापित करने के लिए, निम्नलिखित कोड को Gemfile
में Gemfile
:
gem 'gemname'
इस Gemfile
का उपयोग आपके प्रोजेक्ट के लिए निर्भरता स्थापित करने के लिए Bundler रत्न द्वारा किया जाता है, लेकिन इसका मतलब यह है कि आपको चलने से पहले Bundler स्थापित करना होगा (यदि आपके पास पहले से नहीं है):
gem install bundler
फ़ाइल सहेजें, और फिर कमांड चलाएँ:
bundle install
संस्करण निर्दिष्ट करना
संस्करण संख्या कमांड लाइव पर निर्दिष्ट की जा सकती है, -v
ध्वज के साथ, जैसे:
gem install gemname -v 3.14
जब एक Gemfile
में संस्करण संख्याओं को निर्दिष्ट किया Gemfile
, तो आपके पास कई विकल्प उपलब्ध होते हैं:
- कोई संस्करण निर्दिष्ट नहीं (
gem 'gemname')
- नवीनतम संस्करण स्थापित करेगा जोGemfile
में अन्य रत्नों के साथ संगत है। - सटीक संस्करण निर्दिष्ट (
gem 'gemname', '3.14'
) - केवल संस्करण3.14
को स्थापित करने का प्रयास करेगा (और अगर यह रत्न में अन्य रत्नों के साथ असंगत है तो विफल होGemfile
)। - आशावादी न्यूनतम संस्करण संख्या (
gem 'gemname', '>=3.14'
) - केवल नवीनतम संस्करण को स्थापित करने का प्रयास करेगा जोGemfile
में अन्य रत्नों के साथ संगत है, और विफल रहता है यदि कोई संस्करण3.14
से अधिक या उसके बराबर नहीं है। ऑपरेटर>
का भी उपयोग किया जा सकता है। - निराशावादी न्यूनतम संस्करण संख्या (
gem 'gemname', '~>3.14'
) - यह कार्यात्मक रूप सेgem 'gemname', '>=3.14', '<4'
का उपयोग करने के बराबर है। दूसरे शब्दों में, अंतिम अवधि के बाद केवल संख्या को बढ़ाने की अनुमति है।
एक सर्वोत्तम अभ्यास के रूप में : आप रूबी संस्करण प्रबंधन पुस्तकालयों में से एक का उपयोग करना चाह सकते हैं जैसे कि rbenv या rvm । इन पुस्तकालयों के माध्यम से, आप रूबी रनटाइम और रत्नों के विभिन्न संस्करणों को तदनुसार स्थापित कर सकते हैं। इसलिए, जब किसी परियोजना में काम करते हैं, तो यह विशेष रूप से उपयोगी होगा क्योंकि अधिकांश परियोजनाएं एक ज्ञात रूबी संस्करण के खिलाफ कोडित हैं।
जीथब / फाइलसिस्टम से जेम इंस्टॉलेशन
आप गीथब या फाइलसिस्टम से एक रत्न स्थापित कर सकते हैं। यदि मणि को गिट से या किसी तरह फाइल सिस्टम पर पहले से चेक किया गया है, तो आप इसका उपयोग करके स्थापित कर सकते हैं
gem install --local path_to_gem/filename.gem
गीथूब से मणि स्थापित करना। गीथूब से स्रोतों को डाउनलोड करें
mkdir newgem
cd newgem
git clone https://urltogem.git
मणि का निर्माण
gem build GEMNAME.gemspec
gem install gemname-version.gem
कोड के भीतर से एक आवश्यक मणि स्थापित होने पर जाँच करना
यह जांचने के लिए कि क्या आपके कोड के भीतर से एक आवश्यक रत्न स्थापित किया गया है, आप निम्नलिखित का उपयोग कर सकते हैं (उदाहरण के लिए नोगोगिरी का उपयोग करके):
begin
found_gem = Gem::Specification.find_by_name('nokogiri')
require 'nokogiri'
....
<the rest of your code>
rescue Gem::LoadError
end
हालाँकि, इसे एक फ़ंक्शन में आगे बढ़ाया जा सकता है जिसका उपयोग आपके कोड के भीतर कार्यक्षमता स्थापित करने में किया जा सकता है।
def gem_installed?(gem_name)
found_gem = false
begin
found_gem = Gem::Specification.find_by_name(gem_name)
rescue Gem::LoadError
return false
else
return true
end
end
अब आप जांच सकते हैं कि क्या आवश्यक रत्न स्थापित है, और एक त्रुटि संदेश प्रिंट करें।
if gem_installed?('nokogiri')
require 'nokogiri'
else
printf "nokogiri gem required\n"
exit 1
end
या
if gem_installed?('nokogiri')
require 'nokogiri'
else
require 'REXML'
end
एक Gemfile और Bundler का उपयोग करना
एक Gemfile
आपके आवेदन में निर्भरता को व्यवस्थित करने का मानक तरीका है। एक मूल रत्न इस तरह दिखेगा:
source 'https://rubygems.org' gem 'rack' gem 'sinatra' gem 'uglifier'
आप मणि के संस्करण निर्दिष्ट कर सकते हैं जिसे आप निम्नानुसार चाहते हैं:
# Match except on point release. Use only 1.5.X gem 'rack', '~>1.5.2' # Use a specific version. gem 'sinatra', '1.4.7' # Use at least a version or anything greater. gem 'uglifier', '>= 1.3.0'
आप एक गिट रेपो से सीधे रत्न भी खींच सकते हैं:
# pull a gem from github gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git' # you can specify a sha gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', sha: '30d4fb468fd1d6373f82127d845b153f17b54c51' # you can also specify a branch, though this is often unsafe gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', branch: 'master'
आप उन रत्नों को भी समूहित कर सकते हैं, जिनके आधार पर उनका उपयोग किया जाता है। उदाहरण के लिए:
group :development, :test do # This gem is only available in dev and test, not production. gem 'byebug' end
आप यह निर्दिष्ट कर सकते हैं कि आपको कौन से प्लेटफ़ॉर्म पर चलना चाहिए, अगर आपको कई प्लेटफ़ॉर्म पर चलने में सक्षम होना चाहिए। उदाहरण के लिए:
platform :jruby do gem 'activerecord-jdbc-adapter' gem 'jdbc-postgres' end platform :ruby do gem 'pg' end
एक रत्न से सभी रत्न स्थापित करने के लिए:
gem install bundler bundle install
बंडल / इनलाइन (बंडलर v1.10 और बाद में)
कभी-कभी आपको किसी के लिए एक स्क्रिप्ट बनाने की आवश्यकता होती है, लेकिन आपको यकीन नहीं है कि उसके पास क्या है। क्या वह सब कुछ है जो आपकी स्क्रिप्ट को चाहिए? कोइ चिंता नहीं। बुंडलर के पास लाइन में एक महान कार्य है।
यह एक gemfile
विधि प्रदान करता है और स्क्रिप्ट को चलाने से पहले इसे डाउनलोड करता है और सभी आवश्यक रत्नों की आवश्यकता होती है। एक छोटा सा उदाहरण:
require 'bundler/inline' #require only what you need
#Start the bundler and in it use the syntax you are already familiar with
gemfile(true) do
source 'https://rubygems.org'
gem 'nokogiri', '~> 1.6.8.1'
gem 'ruby-graphviz'
end