2013-04-18 5 views
28

में रूबी बंडलर के कई स्रोतों को मुझे यह सुनिश्चित करने की ज़रूरत है कि मेरे कुछ रत्न रूबीगैम्स की बजाय अपने स्वयं के मणि भंडार से स्थापित हैं, जबकि शेष रूबीगेम्स से स्थापित हैं। क्या मैं इसे Gemyile में रूबीगम्स में एक समान नामित मणि के साथ नामकरण संघर्ष के बारे में चिंता किए बिना सेट कर सकता हूं? मैं कैसे निर्धारित कर सकता हूं कि मणि कहाँ से डाउनलोड किया गया है?रूबी बंडलर जेमफाइल

जैसे Gemfile:

source :rubygems 
gem 'gemfromrubygems1' 
gem 'gemfromrubygems2' 

source "http://our.own.gem.repo.com/the/path/to/it" 
gem 'gemfromourrepo' 

उत्तर

4

एक ही रास्ता मैंने पाया एक भयानक हैक की तरह लगता है।

बंडलर आखिरी सूचीबद्ध स्रोत पर शुरू होने वाले आपके मणि का सबसे अच्छा संस्करण खोजेगा और फिर पहले सूचीबद्ध सभी स्रोतों की खोज करेगा। इससे कोई फर्क नहीं पड़ता कि स्रोत रेखाएं मणि लाइनों के सापेक्ष हैं, केवल एक दूसरे के सापेक्ष।

मैंने इसे गिट और: पथ का उपयोग करके काम करने की कोशिश की, लेकिन जेम्स के लिए उन कार्यों में से कोई भी नहीं। यह सर्वोत्तम संस्करण से मेल खाता है।

यदि आप अपने मणि का संस्करण 2.mine.1 जैसे कुछ सेट करते हैं और अपने सर्वर पर धक्का देते हैं, तो आप अपने जेमफाइल में संस्करण को बाधित कर सकते हैं।

source :rubygems 
source 'http://myrepo'  
gem 'gemfromourrepo', '~> 2.ourrepo' 

तब सबसे अच्छा मिलान संस्करण आपके सर्वर से एक होना चाहिए। एक मौका है कि कोई भी उसी नाम के अपने मणि को 2.ourrepo.2 के साथ rubygems तक दबा सकता है, लेकिन यह अद्वितीय नहीं है, लेकिन यह अद्वितीय नहीं है।

+0

मुझे यह समाधान पसंद है क्योंकि यह उत्पादन को मणि के उत्पादन संस्करण से खींचने देता है, जबकि विकास में मैं मणि के विकास संस्करण से खींच सकता हूं। – LisaD

5

की खोज कर रहे हैं पिछले पहले दर्ज प्रवेश किया से Gemfile manpage स्रोतों में स्रोत प्राथमिकता अनुभाग के अनुसार: यह आप मणि विशिष्ट स्रोतों

gem "foo", "1.0", :path => "bar" 

स्रोत स्थापित करने के लिए अनुमति देता है।

आपने जो कहा है उसके आधार पर, ऐसा लगता है कि आप हमेशा अपने मणि को rubygems.org से अधिक पसंद करना चाहते हैं। जब तक आप अपनी पसंद (यानी rubygems.org से कुछ dups और अपने निजी रेपो से कुछ dups।) तो आपकी समस्या को बस निम्नलिखित Gemfile साथ हल किया जाता है भिन्न करने की जरूरत नहीं है के रूप में:

source 'https://rubygems.org' 
source 'http://our.own.gem.repo.com/the/path/to/it' 

gem 'gemfromrubygems1' 
gem 'gemfromrubygems2' 
gem 'gemfromourrepo' 
44

Bundler 1.7 एक नया है विशेषता यह है कि आप उन्हें एक ब्लॉक में घोंसले बनाने के विशिष्ट रत्नों के लिए स्रोत का चयन करने की अनुमति देता है:

source "https://rubygems.org" 

gem 'gemfromrubygems1' 
gem 'gemfromrubygems2' 

source "http://our.own.gem.repo.com/the/path/to/it" do 
    gem 'gemfromourrepo' 
end 

या एक विकल्प के रूप में यह निर्दिष्ट करने:

source "https://rubygems.org" 

gem 'gemfromrubygems1' 
gem 'gemfromrubygems2' 

gem 'gemfromourrepo', source: "http://our.own.gem.repo.com/the/path/to/it" 

विवरण के लिए http://bundler.io/v1.7/gemfile.html देखें।

संबंधित मुद्दे