2012-08-31 19 views
6

मैं गिथब से बाहर निकलने वाला ऐप चलाने की कोशिश कर रहा हूं।आप Gemfile.lock फ़ाइल से रत्न कैसे स्थापित करते हैं?

से आवश्यक रत्न स्थापित करने के लिए मैंने bundle install चलाया है। हालांकि ऐप चलाने पर, एक त्रुटि संदेश मुझे बताता है कि इंस्टॉल किए गए रत्न गलत संस्करण हैं।

Gemfile.lock का निरीक्षण करने पर मुझे लगता है कि संस्करण स्थापित रत्नों से पुराने हैं। (यानी मेरे पास रत्नों के नए संस्करण स्थापित हैं और एप्लिकेशन को पुराने रत्न की आवश्यकता है।)

क्या Gemfile.lock फ़ाइल में वर्णित संस्करणों के अनुसार सभी रत्न स्थापित करने का कोई त्वरित तरीका है? वैकल्पिक रूप से उस फ़ाइल को अनदेखा करने का कोई तरीका है?

Gemfile:

source 'http://rubygems.org' 
    gem 'rails', "3.0.9" 
    gem "sass" 
    .. 

Gemfile.lock:

sass (3.1.1) 
.. 

उपरोक्त उदाहरण में, भले ही सास एप्लिकेशन इंस्टॉल है विशेष रूप से संस्करण 3.1.1 की आवश्यकता है।

+0

बंडलर हमेशा 'Gemfile.lock' फ़ाइल में संस्करणों को स्थापित करना चाहिए, यह इसका उद्देश्य है। क्या आपके पास कभी भी आपके सिस्टम पर स्थापित उन रत्नों के संस्करण नहीं हैं? – janders223

+0

मेरे पास ऐप द्वारा निर्दिष्ट अनुसार नए रत्न स्थापित हैं। जब मैं एक बंडल चलाता हूं तो नवीनतम उपलब्ध मणि संस्करण स्थापित होता है। – dmuk

+3

बस लॉक फ़ाइल को हटाएं और फिर से बंडल करें। – emrahbasman

उत्तर

6

सुनिश्चित करें कि आप एक वैध Gemfile.lock फ़ाइल के साथ bundle execute rails server

+1

+1, आपको सर्वर को बंडलर से चलाने की आवश्यकता है ताकि यह सही रत्नों का उपयोग कर सके। –

9

साथ वेब सर्वर को चला रहे हैं, अकेले bundle install, पर्याप्त होना चाहिए, जब तक कि कुछ विशेष मणि संस्करण yanked किया गया है। उस स्थिति में आपको एक वैकल्पिक मणि संस्करण की तलाश करनी होगी जो अभी भी उपलब्ध है (आमतौर पर bundle update name_of_yanked_gem पर्याप्त होगा)।

बारे sass 3.1.1, यह इतना अनुप्रयोग है कि विशेष संस्करण, बल्कि, संभावना है कि नवीनतम संस्करण उपलब्ध है जब Gemfile.lock उत्पन्न पिछले/नवीनीकृत किया गया था समग्र संस्करण की कमी Gemfile में निर्दिष्ट के रूप में दिया था की आवश्यकता है कि नहीं है। जैसा कि आपने सूचीबद्ध किया है, sass के लिए कोई संस्करण श्रेणी निर्दिष्ट नहीं है, लेकिन अन्य रत्नों में निर्भरता के रूप में sass होने पर और बाधाएं लागू हो सकती हैं।

Gemfile.lock को अनदेखा करना एक अच्छा विचार नहीं है क्योंकि सामान्य परिस्थितियों में यह मणि संस्करणों को निर्दिष्ट करेगा जो अंतिम रूप से एप्लिकेशन के साथ उपयोग करने योग्य थे।

+0

क्या आप वाकई बंडल इंस्टॉल पर्याप्त हैं? उदाहरण के लिए, क्या होगा यदि एक ही मणि के कई संस्करण स्थापित हैं (जैसा कि अक्सर होता है)? मैंने सोचा कि 'बंडलर निष्पादन' क्या था। – Dty

+0

भले ही, 'Gemfile.lock' जेनरेट किया गया है, तो इसमें समग्र बाधाओं को हल करने के बाद प्रत्येक निर्दिष्ट मणि के लिए केवल एक संस्करण होगा। 'बंडल इंस्टॉल 'स्थापित करने के लिए है, और' बंडल निष्पादन 'निष्पादन के लिए है। – prusswan

+0

आह ठीक है, मुझे लगता है कि आप पूछताछ के मूल प्रश्न "मैं रत्न कैसे स्थापित करूं" का जवाब दे रहा हूं। मैं जवाब दे रहा हूं कि मुझे लगता है कि उसकी असली समस्या है। – Dty

2

इस कोशिश ..

bundle install --deployment 
ऊपर तैनाती विकल्प के साथ

, बंडल तो Gemfile.lock से पढ़ता है।

इतना ही नहीं, जवाहरात बंडल निर्देशिका जा रहा है ऑटो बनाया के साथ, निर्देशिका विक्रेता/बंडल करने के लिए स्थापित कर रहे हैं।

इसके अलावा, नई निर्देशिका .bundle रेल रूट निर्देशिका के तहत सीधे बनाया जाता है, और

BUNDLE_FROZEN: '1' 
BUNDLE_PATH: vendor/bundle 
BUNDLE_DISABLE_SHARED_GEMS: '1' 

आप के लिए आशा है कि इसके बाद के संस्करण काम करता है config नाम की एक फ़ाइल, जिनकी सामग्री इस प्रकार है है ...।

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