2011-11-30 17 views
13

के साथ समस्या को पुनरारंभ करें हम टोपी के साथ तैनाती कर रहे हैं और एक स्क्रिप्ट का उपयोग कर रहे हैं जो यूएसआर 2 को यूनिकर्न प्रक्रिया में पुनः लोड करने के लिए भेजता है और यह आमतौर पर काम करता है लेकिन हर बार कुछ बार विफल हो जाता है। जब ऐसा होता है तो यूनिकॉर्न लॉग में दिखने से पता चलता है कि यह एक पुरानी रिलीज निर्देशिका में एक जेमफाइल की तलाश में है जो अब मौजूद नहीं है।यूनिकॉर्न कैपिस्ट्रानो

अपवाद:

/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/definition.rb:14:in `build': /var/www/railsapps/inventory/releases/20111128233407/Gemfile not found (Bundler::GemfileNotFound) 

स्पष्ट करने के लिए है कि मौजूदा रिलीज लेकिन एक पुराने एक है कि जब से निकाला जा चुका है नहीं है।

जब यह काम करता है तो यह सही तरीके से काम करता प्रतीत होता है - यानी यह नया कोड पिकअप करता है - इसलिए मुझे नहीं लगता कि यह किसी भी तरह पुरानी रिलीज का जिक्र है।

कोई विचार?

उत्तर

11

आपको सर्वर शुरू करने से पहले BUNDLE_GEMFILE पर्यावरण चर सेट करना चाहिए, इसे current/Gemfile पर इंगित करें।

23

अपने unicorn.rb में before_exec ब्लॉक

current_path = "/var/www/html/my project/current" 

before_exec do |server| 
    ENV['BUNDLE_GEMFILE'] = "#{current_path}/Gemfile" 
end 

इसके बारे में अधिक यहाँ http://blog.willj.net/2011/08/02/fixing-the-gemfile-not-found-bundlergemfilenotfound-error/

+1

इसके अलावा पढ़ें जोड़ने के लिए, मत भूलना कि अगर गेंडा कॉन्फ़िग फ़ाइल बदल गया है, तो आप मैन्युअल बंद करना चाहिए और गेंडा शुरू नई सेटिंग्स को लोड करने के लिए फिर से। – lulalala

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