बंडल के साथ सिर्फ एक मणि अद्यतन करें


233

मैं अपने रेल एप्लिकेशन में निर्भरता का प्रबंधन करने के लिए बंडलर का उपयोग करता हूं, और मेरे पास एक git रिपॉजिटरी में मणि की मेजबानी की जाती है जैसे कि निम्नलिखित शामिल हैं:

gem 'gem-name', :git => 'path/to/my/gem.git'

इस मणि को अद्यतन करने के लिए, मैं निष्पादित करता हूं, bundle updateलेकिन यह मणिफाइल में उल्लिखित सभी मणि को भी अद्यतन करता है। तो सिर्फ एक विशिष्ट रत्न को अपडेट करने की आज्ञा क्या है?

जवाबों:


354

यहाँ आप के बीच अंतर पर एक अच्छी व्याख्या पा सकते हैं

मणि और निर्भरता दोनों को अपडेट करें:

bundle update gem-name 

या

रत्न को विशेष रूप से अपडेट करें:

bundle update --source gem-name

संभावित दुष्प्रभावों के कुछ अच्छे उदाहरणों के साथ।

अपडेट करें

जैसा कि @ टिम का उत्तर कहता है, बुंदेलर के रूप में 1.14 आधिकारिक तौर पर समर्थित तरीका है bundle update --conservative gem-name


19
सावधान रहें, "मणि और निर्भरता को अद्यतन करना" का अर्थ है कि यदि यह एक निर्भरता है तो रेल स्वयं को अपडेट कर सकता है और आप शायद ऐसा नहीं चाहते। - स्रोत केवल पैरामीटर के रूप में निर्दिष्ट मणि को अद्यतन करेगा। तो यह ज्यादातर स्थितियों में बेहतर है।
1.44mb

संस्करण कैसे निर्दिष्ट करें?
ओशन विस्पररुमा

1
@OshanWisumperuma Gemfile या संभवतः Gemfile.lock में संस्करण को इन बंडल कमांड को चलाने से पहले निर्दिष्ट करें
हैरी वुड

185

ऐसा करने का तरीका निम्नलिखित कमांड चलाना है:

bundle update --source gem-name

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

30

ऐसा प्रतीत होता है कि बंडल के नए संस्करणों (> = 1.14) के साथ:

bundle update --conservative gem-name

नोट: यह कमांड एक रत्न को इसकी निर्भरता के बिना अपडेट करेगा
mmike

24

आपको कमांड लाइन पर केवल रत्न का नाम निर्दिष्ट करना होगा:

bundle update gem-name

1
अजीब। जो bundle help updateकरने को कहता है। बंडलर का कौन सा संस्करण आप उपयोग कर रहे हैं?
ब्रैंडन

40
bundle update gem-nameमणि को अद्यतन करेगा और "उसकी किसी भी निर्भरता को"।
याका

5

bundle update gem-name [--major|--patch|--minor]

यह निर्भरता के लिए भी काम करता है।


1
क्या किसी विशिष्ट संस्करण में इसे अपडेट करने का कोई तरीका है? --major, --minor, और --patchझंडे स्वचालित रूप से इसे नवीनतम संभव संस्करण में नवीनीकृत।
user2490003

2

मैंने bundle update --sourceखुद को लंबे समय तक इस्तेमाल किया है लेकिन ऐसे परिदृश्य हैं जहां यह काम नहीं करता है। सौभाग्य से, वहाँ एक मणि कहा जाता है bundler-patchजिसका लक्ष्य इस कमी को ठीक करना है।

मैंने एक छोटी ब्लॉग पोस्ट भी लिखी कि कैसे उपयोग करें bundler-patchऔर क्यों bundle update --sourceलगातार काम नहीं करता है। इसके अलावा, chrismo द्वारा एक पोस्ट की जांच करना सुनिश्चित करें जो कि विस्तार से बताता है कि --sourceविकल्प क्या करता है।


0

bundler update --source gem-name Gemfile.lock में संशोधन हैश का अद्यतन करेगा जिसे आप उस git शाखा के अंतिम प्रतिबद्ध हैश (डिफ़ॉल्ट रूप से मास्टर) के साथ तुलना कर सकते हैं।

GIT remote: git@github.com:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954

पर पाया जा सकता है github.com/organization/repo-name/commits/c810f4a2(मैंने यूआरएल के लिए शॉर्टहैंड 8 कैरेक्टर कम हैश का इस्तेमाल किया)

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