2012-02-20 6 views
6

हमारे समूह में कई लोग हैं, जिनमें से कोई भी रत्न के किसी भी संयोजन पर काम कर रहा है। वर्तमान में, हमारे Gemfile इस तरह सामान है:जेमफाइल: एकाधिक डेवलपर्स के लिए स्थानीय या दूरस्थ रत्नों को सशर्त रूप से घोषित करने का एक बेहतर तरीका

gem 'awesome-gem', :git => '[email protected]:somebody/awesome-gem.git' 
# gem 'awesome-gem', :path => '/Users/developer-A/workspace/awesome-gem' 

# gem 'rad-gem', :git => '[email protected]:somebody/rad-gem.git', :branch => 'release' 
gem 'rad-gem', :path => '/some/path/specific-to/developer-B/rad-gem' 

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

यह दोनों एक दर्द और बदसूरत, तो मैं एक बेहतर समाधान है, लेकिन सबसे अच्छा मैं के साथ आ सकता है कुछ इस तरह है के साथ आने की कोशिश की है:

if ENV['RADGEM_PATH'] 
    gem 'rad-gem', :path => ENV['RADGEM_PATH'] 
else 
    gem 'rad-gem', :git => '[email protected]:somebody/rad-gem.git', :branch => 'release' 
end 

यह डेवलपर-बी और सी को ऊपर वर्णित दर्द को दूर करते हुए अपने स्वयं के रेड-मणि पथ को सेट करने की अनुमति देता है। हालांकि, यह अभी भी बदसूरत है और मैं सोच रहा हूं कि ऐसा करने का एक बेहतर तरीका है, संभवतः समूह का उपयोग करना?

उत्तर

8

अद्यतन (वर्तमान)

एक हाल का अपडेट अब बंदर को local git repos प्रदान करता है। यह इस समस्या को हल करने का वर्तमान तरीका है। आप sekrett

अद्यतन (पुराना)

आप Bundler> = 1.2 है, तो अब एक better way to do this धन्यवाद। उदाहरण के लिए,

bundle config local.blog ~/Work/gems/blog 

मूल जवाब (पुराने)

rspec कोर टीम पर मेरा एक दोस्त ने मुझे the approach they used in the rspec-core Gemfile से पता चला है, इसलिए मुझे लगता है कि मुझे लगता है कि का उपयोग करेंगे।

+0

दस्तावेज़ीकरण के लिए यूआरएल अब http://gembundler.com/v1.2/man/bundle-config.1.html#LOCAL-GIT-REPOS – cbliard

+0

अब यह है: http://bundler.io/v1 .2/आदमी/बंडल-config.1.html # स्थानीय-GIT-Repos – sekrett

0

क्या आपके पास गतिशील Gemfile भी नहीं हो सकता है कि विकास में उस उपयोगकर्ता की मशीन पर रत्नों के स्थान के लिए एक छिपी हुई फ़ाइल (.my_local_gems) का उपयोग किया जाता है? या आप GEMS_DEVEL_HOME जैसे चर के लिए कुछ पर्यावरण चर का उपयोग भी कर सकते हैं?

किसी भी तरह से, यह हर किसी को अपने सभी स्थानीय रत्नों को अद्यतित रखने और उत्पादन या स्टेजिंग में रखने के लिए मजबूर करेगा, सामान्य जेमफ़ाइल प्रभावी होगा।

याद रखें, जेमफाइल सिर्फ रूबी है ताकि आप वहां सभी प्रकार के कोड शामिल कर सकें, न केवल बंडलर-विशिष्ट मुहावरे।

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

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