मैं किसी विशेष रत्न के एक अलग संस्करण को "सक्रिय" कैसे कर सकता हूं?


85

मैं अपने OS के लिए "सक्रिय" रत्न के रूप में रेल 2.3.10 के बीच स्विच करना चाहता हूं, ताकि मैं इसे कमांड लाइन पर लागू कर सकूं।

क्या इसे करना संभव है? मैं rvm का उपयोग नहीं कर रहा हूँ। शायद यह शुरू करने का समय है।

मैंने कोशिश की gem install rails --version=2.3.10, लेकिन यह सुनिश्चित करता है कि मणि का संस्करण स्थापित किया गया है, यह इसे अंदर नहीं डालता है /usr/bin/rails

(मैं पहले से ही अपने ऐप्स के लिए बंडलर का उपयोग करता हूं - लेकिन अब तक ओएस स्तर पर रत्नों पर किसी भी सटीक नियंत्रण की आवश्यकता नहीं है)

जवाबों:


155

यदि आपकी समस्या एक निश्चित संस्करण के बायनेरिज़ को चलाने की है, तो:

rails --version # => the latest version
rails _2.3.10_ --version # => Rails 2.3.10

यह पैटर्न ( gem-binary _gem-version_) किसी भी रत्न बाइनरी के लिए काम करता है।

आशा करता हूँ की ये काम करेगा।


1
ओह, यह मुझे कार्यालय में एक लंबा सप्ताहांत बचा लिया है, धन्यवाद!
लचलान मैकड।

2
यह उन सभी के लिए काम नहीं लगता है: rackup _1.4.3_ --version<br> Rack 1.1 (Release: 1.4)
क्लो

1
रैकअप केवल संस्करण जारी करता है (देखें Rack.versionऔर Rack.release github.com/rack/rack/blob/master/lib/rack.rb )। कोशिश करें gem install rack --version=1.3 && rackup _1.3.0_ --version, यह प्रिंट होगाRack 1.1 (Release: 1.3)
डैनियल वर्तनोव

और बस के मामले में, यहां बताया गया है कि यह कैसे काम करता है:which rackup | xargs cat
डैनियल वर्तनोव

धन्यवाद डैनियल बहुत उपयोगी
मार्ग

12

RVM का प्रयोग करें

आरवीएम आपको रूबी और रत्न के विभिन्न संस्करणों का प्रबंधन करने की अनुमति देता है। आप उदाहरण के लिए, रूबी का एक संस्करण स्थापित कर सकते हैं

rvm install 1.9.2

तब आप इसका उपयोग कर उपयोग कर सकते हैं:

rvm use 1.9.2

रत्नों के साथ प्रति परियोजना के आधार पर विशिष्ट रत्नों का उपयोग करें।

यदि आप आगे के नामस्थान चाहते हैं तो आप रत्नों को स्थापित कर सकते हैं; निर्देशिका जिसमें एक विशिष्ट परियोजना के लिए विशिष्ट रत्न शामिल होंगे।

rvm gemset create myproject

तो आप उन्हें इस तरह से उपयोग कर सकते हैं:

rvm use 1.9.2@myproject

स्वचालन

अपने प्रोजेक्ट रूट में रत्नों, पॉप .ruby -version और .ruby-gemet फ़ाइलों को बदलने की प्रक्रिया को स्वचालित करने के लिए । जब आप अपने प्रोजेक्ट डायरेक्टरी में सीडी का उपयोग करना चाहते हैं तो रूबी का संस्करण और आपके द्वारा उपयोग किए जाने वाले रत्न के नाम को पॉप करें।

रत्नों को अपने रत्न में स्थापित करना

यदि आप इसका उपयोग कर रहे हैं तो अपने रत्नों को सामान्य तरीके से अपने बस्टलर में स्थापित करें:

bundle install

या बस नियमित पुराने का उपयोग कर:

gem install mygem

रत्न सही रत्न में जाएंगे।

आरवीएम विकल्प

तुम भी rbenv, जो समान काम करता है की जाँच करना चाहते हो सकता है।


1
rvm के साथ समस्या है (जैसा कि आपने बताया) कि यह माणिक संस्करण और मणि संस्करण को संभालता है। rbenv सिर्फ माणिक संस्करणों को संभालता है और बंडल को मणि संस्करणों को संभालने देता है।
दास्य

7

आप आरवीएम का उपयोग कर सकते हैं

फिर आप बाद में बुंडलर का भी उपयोग कर सकते हैं , जो मणि निर्भरता को ठीक करता है।

अपने में Gemfile

gem "rails", "2.3.10"

और आपके आवेदन में

require 'rubygems'
require 'bundler/setup'

और आपने कल लिया।


इस के अलावा, यदि आप केवल करने के लिए कुछ स्क्रिप्ट चाहते संस्करणों अपने Gemfile में घोषित "देख", उन्हें के रूप में "बंडल कार्यकारी <script-name>", जैसे चलानेbundle exec warble
rustyx

3

संपादित करें: बस पोस्ट में आपका RVM उल्लेख देखा। निश्चित रूप से जाने का रास्ता।

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

यहाँ अधिष्ठापन गाइड है: http://rvm.beginrescueend.com/rvm/install/

एक बार जब आप सब कुछ उठ जाते हैं, तो आप कमांड लाइन पर अपने सभी स्थापित रूबियों को देख सकते हैं rvm list, और rvm use ruby-headउदाहरण के लिए स्विच कर सकते हैं । आरवीएम प्रत्येक माणिक पर रत्नों को अलग-अलग रखता है, जिसे आपके प्रश्न के साथ मदद करनी चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.