2016-03-30 4 views
12

हर बार जब मैं कमांड लाइन पर किसी भी मणि आदेश चला Gemfile.lock को जोड़ने से Bundler रोक सकता, Bundler इस लाइन को जोड़ने के लिए मेरी Gemfile.lock फ़ाइल को छू पर जोर इसे हमारे भंडार में प्रतिबद्ध करना चाहते हैं, क्योंकि इसका मतलब है कि रुबी 2.2.2 के एक अलग पैच स्तर का उपयोग करके प्रत्येक देव मेरे साथ एक प्रतिबद्ध युद्ध में होगा। (मैंने पहले से ही BUNDLED_WITH लाइन के साथ एक ही मुद्दे पर इस्तीफा दे दिया है।) लेकिन मैं तब तक तैनात नहीं कर सकता जब तक कि मैं उस पंक्ति को प्रतिबद्ध न करें, क्योंकि हमारा तैनाती रेक रेक के माध्यम से चलता है और तैनाती चलाने से बंडलर इस ब्लॉक को जोड़ने के लिए प्रेरित करता है , जहां तैनाती प्रक्रिया कहती है, "प्रतीक्षा करें! आपका कामकाजी पेड़ गंदा है! आप अधूरे परिवर्तनों को तैनात कर सकते हैं !!!! 1!" (ठीक है, सचमुच नहीं है, लेकिन आप विचार मिलता है।)मैं रूबी संस्करण

मैं Bundler छोड़ने के लिए बता सकते हैं RUBY VERSION (और, आदर्श, BUNDLED_WITH) Gemfile.lock से बाहर तो हम इस हास्यास्पद नृत्य करने के लिए नहीं है?

(how to prevent bundler from adding platform info to Gemfile.lock वही सवाल प्रतीत हो रहा है, लेकिन वहाँ कोई जवाब नहीं है, natch।)

उत्तर

7

मुझे ऐसा नहीं लगता है, लेकिन हो सकता है यह ठीक है:

2.1.0 के रूप में, रूबी नहीं रह गया है कई पैच स्तर विज्ञप्ति किसी दिए गए संस्करण के लिएHow do version numbers work for MRI Ruby?

2.2.2p95 पर स्वीकृत उत्तर देखें 2.2.2 का एकमात्र पैच स्तर जो कभी भी जारी किया जाएगा। 'पी 5 9' का मतलब है कि 2.2.0 के बाद से 9 5 काम हुए हैं।

चूंकि आपकी पूरी टीम 2.2.2 पर होगी, इसलिए इसे आपके Gemfile.lock में छोड़ने में समस्याएं नहीं होनी चाहिए। (जब तक हर कोई बंडलर को उस संस्करण में अपडेट करता है जो वैसे भी करता है। अन्यथा रुबी संस्करण को जोड़ा और हटा दिया जाता है।)

+1

है और फिर भी यह पता चला है कि हम रूबी संस्करण पर नहीं बल्कि बंडलर के विभिन्न संस्करणों पर इस ब्लॉक को जोड़ने और हटाने के लिए युद्ध भी प्राप्त करते हैं।* श्वास * – pjmorse

+0

@pjmorse मुझे लगता है कि सभी टीम के सदस्यों के लिए एक ही बंडलर संस्करण होना अच्छा है। यदि आपको रत्नों को लॉक करने की आवश्यकता है, तो बंडलर क्यों नहीं? –

+0

@ फ्रैंकलिन Yu अच्छा सवाल है। मुझे लगता है क्योंकि बंडलर डेवलपर टूलिंग है और एप्लिकेशन की प्रत्यक्ष निर्भरता नहीं है, इसके संस्करण को लॉक करना मणि संस्करणों को लॉक करने से कम महत्वपूर्ण है। (साथ ही, यदि आपकी टीम एकाधिक अनुप्रयोगों पर काम कर रही है, तो आपको एप्लिकेशन में बंडलर के लॉक संस्करण को समन्वयित करने की आवश्यकता होगी, जो एक ड्रैग हो सकता है। आप अनिवार्य रूप से अपनी टीम को लॉन्चस्टॉप बंडलर अपडेट करने के लिए कर रहे हैं।) – pjmorse

-4

आप आप अपने .gitignore फाइल करने के लिए Gemfile.lock जोड़ सकते हैं Git की तरह संस्करण नियंत्रण किसी प्रकार का उपयोग कर रहे हैं।

इस तरह जब भी आप एक नया परिवर्तन बढ़ाते हैं तो आप अपने Gemfile.lock को धक्का नहीं देंगे। विशेष रूप से जब अन्य डेवलपर्स को इसकी आवश्यकता नहीं होती है - एक बार जब वे बंडल चलाते हैं, तो बंडल एक नया Gemfile बना देगा। पूरा होने पर लॉक करें।

+5

Gemfile.lock का पूरा बिंदु Gemfile में निर्दिष्ट आवश्यकताओं के आधार पर सटीक निर्भरता संस्करणों को लॉक करना है। यदि आप एक पुनरुत्पादित वातावरण चाहते हैं तो Gemfile.lock को बनाना बहुत जरूरी है। – jackrabbit

+2

गिट रिपॉजिटरी से 'Gemfile.lock' छोड़ना एक विकल्प नहीं है। हम वास्तव में, परियोजना में सभी रत्नों के समान संस्करणों का उपयोग करके हमारी टीम पर सभी डेवलपर्स चाहते हैं। – pjmorse

+0

मैं देखता हूं कि आप कहां से आ रहे हैं, अच्छा –

0

नहीं, इसे कम से कम नहीं हटाया जा सकता है जैसा कि मैंने इसे लिखा है, बंडलर वर्तमान का संस्करण (संस्करण)।

यह ब्लॉक बंडलर :: परिभाषा के in the #to_lock method जोड़ा गया है। if locked_ruby_version में 0p, और locked_ruby_version एकमात्र सशर्त है जो एक मौजूदा लॉकफाइल (Gemfile.lock) में परिभाषित संस्करण देता है या सिस्टम रूबी-बंडलर locked_ruby_version को झूठा मूल्य लौटने से बचने के लिए बहुत मेहनत करता है।

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