2011-11-23 16 views
15

मैं के साथ उत्पादन में मेरी जवाहरात स्थापित किया है में काम करने के बंडल कार्यकारी प्राप्त नहीं कर सकता:उत्पादन

cd /app/releases/current && bundle install --gemfile /app/releases/current/Gemfile --path /app/shared/bundle --deployment --quiet --without development test 

मैं कर सकते हैं (rake और gem को छोड़कर) मेरी जवाहरात की bundle exec नहीं किसी भी:

$ bundle exec whenever 
bundler: command not found: whenever 
Install missing gem executables with `bundle install` 
जीई

$ cd /app/shared 
$ find . -name whenever 
./bundle/ruby/1.9.1/gems/whenever-0.6.8/bin/whenever 
./bundle/ruby/1.9.1/gems/whenever-0.6.8/lib/whenever 

मेरे (:

जवाहरात सही ढंग से/एप्लिकेशन/साझा/बंडल में स्थापित कर रहे हैं nerated) बंडल config (/app/current/.bundle/config में) है:

--- 
BUNDLE_FROZEN: "1" 
BUNDLE_PATH: /app/shared/bundle 
BUNDLE_DISABLE_SHARED_GEMS: "1" 
BUNDLE_WITHOUT: development:test 

मैं गहरे लाल रंग का 1.9.2p290 चल रहा हूँ, मैन्युअल रूप से/usr/स्थानीय/बिन करने के लिए स्थापित।

मैं --binstubs विकल्प में अपने जवाहरात bundle install है? bundle exec संग्रहीत BUNDLE_PATH क्यों खोजेगा?

+0

मुझे एक समान समस्या थी मैं 'बंडल स्थापित - तैनाती 'के साथ हल किया। मुझे यकीन नहीं है ** क्यों ** काम किया, इसलिए यही एक टिप्पणी है और जवाब नहीं है। –

+0

मेरा कैपिस्ट्रानो कार्य 'बंडल इंस्टॉल' चलाते समय '--deployment' तर्क सहित है। क्या यही मतलब है तुम्हारा? या आपका मतलब है, '--path' तर्क को हटा दें? – nfm

+1

क्या आप कैपिस्ट्रानो का उपयोग कर रहे हैं या मैन्युअल तैनाती कर रहे हैं? – Nick

उत्तर

0

की कसौटी पर या विकास खंड में है मैं vendor/bundle करने के लिए /app/shared/bundle से --path बदल गया है, जो यह काम कर दिया।

यह मेरे लिए गलत लग रहा था, इसलिए मैं /app/shared/bundle और vendor/bundle हटाया, और /app/shared/bundle के लिए फिर से bundle install भाग गया।

यह साफ़ bundle install समस्या को हल किया गया। मुझे कोई जानकारी नहीं है की क्यों!

किसी को भी इस के लिए एक स्पष्टीकरण है, मुझे स्वीकार किए जाते हैं जवाब के रूप में आप को चिह्नित करने में खुशी होगी। लेकिन यह मेरे लिए समस्या तय की।

0

मुझे लगता है कि जब जब भी मणि अपने Gemfile में नहीं है, या यह आपके Gemfile

+0

सुझाव के लिए धन्यवाद। मेरे Gemfile के मुख्य शरीर में जब भी 'रत्न' है। – nfm

8

कैपिस्ट्रानो और रेल का उपयोग करके और तैनाती फ़ाइल के रूप में deploy.rb का उपयोग करना।

मैंने महसूस किया कि आदेश जहां require "whenever/capistrano" प्रकट होता है बदल रहा है वास्तव में मायने रखती है। मैं डाल दिया है कि लगभग अंतिम पंक्ति पर:

deploy.rb में:

#first lines: 
set :rvm_ruby_string, "1.9.3" 
set :rvm_type, :user 
set :whenever_command, "bundle exec whenever" 

# others... 

# last lines 
require 'rvm/capistrano' 
require 'bundler/capistrano' 
require "whenever/capistrano" 

after "deploy:update_code", "customs:config" 
after "deploy:create_symlink","deploy:create_symlink" 
after "deploy", "deploy:cleanup" 

load 'deploy/assets' 
# end 
+0

आप रॉक, धन्यवाद! – ipd

+0

मेरे लिए समस्या का समाधान नहीं किया। – Jan

+0

इस समाधान ने मुझे सही रास्ते पर रखा, लेकिन वर्णित के रूप में काम नहीं किया। तैनाती.आरबी की पहली पंक्ति पर 'आवश्यकता' बंडलर/कैपिस्ट्रानो '' की आवश्यकता होती है और 'आवश्यकता होती है' जब भी आखिरी पंक्ति पर/capistrano "मेरे लिए यह किया जाता है। – Jos

0

शायद विभिन्न मुद्दों वही त्रुटि संदेश होता है। मेरे लिए, जब भी रत्न समर्थन प्राप्त करने के लिए मणि अद्यतन किया गया था, मुझे कैपिस्ट्रानो मणि अपडेट करना पड़ा। जब भी मेरे अपग्रेड से पहले काम किया था तो बंडल निष्पादन।

1

चेक जहां अपने बंडल: स्थापित किया जा रहा है, और यह ऊपर अपने deploy.rb फ़ाइल में की आवश्यकता होती है 'जब भी/Capistrano' जाकर देखें।

ऐसा लगता है कि यह शुरू हो रहा था जब मैं एक बंडल अद्यतन है कि मेरे Gemfile.lock में जब भी मणि संस्करण में वृद्धि हुई थी।

ऐसा लगता है कि जब भी यह chrontab अद्यतन है चलाने के लिए इससे पहले कि मेरे तैनाती फ़ाइल बंडल चलाता है की कोशिश करता है:

स्थापित से https://github.com/javan/whenever/blob/master/lib/whenever/capistrano.rb

before "deploy:finalize_update", "whenever:update_crontab" 

और मेरे deploy.rb

after 'deploy:finalize_update', 'bundle:install' 

था हर किसी की तरह अन्यथा इस धागे में, मैंने कुछ चीजों की कोशिश की और मुझे यकीन नहीं है कि यह मेरे लिए तय है, लेकिन बंडल को तैनात करने से पहले इंस्टॉल करना: finalize_update, और se इसे "पहले" के रूप में टेंट करना 'जब भी/capistrano' की आवश्यकता होती है, ऐसा लगता है कि यह मेरे परिदृश्य में संभावित सुधार है।

4

मैं इस समस्या थी और सही क्रम में की आवश्यकता थी, अर्थात

require 'rvm/capistrano' 
require 'bundler/capistrano' 
require 'whenever/capistrano' 

यह अभी भी बंडल से पहले crontab अद्यतन चलाने के लिए चाहता था: स्थापित करें। समाधान

gem update bundler 

है कि यह फिर से काम करना शुरू करने के बाद से अपने स्थानीय बंडलर अद्यतन करने के लिए किया गया था। यह सुनिश्चित नहीं है कि वास्तव में उन सभी संस्करणों के बीच क्या बदल गया जो इस सब को तोड़ दिया।

+0

आपके नोट के लिए धन्यवाद कि आपको आवश्यक है अपने LOCAL बंडलर को अपडेट करने के लिए। मेरे पास सबकुछ सही क्रम में था और यह सुनिश्चित करने के लिए उत्पादन सर्वर की जांच की थी कि इसमें नवीनतम संस्करण इत्यादि हो, लेकिन अभी भी त्रुटि हो रही थी।एक बार जब मैंने अपना स्थानीय बंडलर अपडेट किया तो सबकुछ काम करता था। जैसा कि इस बंडलर मुद्दे में बताया गया है https://github.com/javan/whenever/issues/275 बंडलर और जब भी प्रक्रिया में थे या सही कैपिस्ट्रानो हुक का उपयोग करने के लिए काम कर रहे थे। –

+0

'बंडलर/कैपिस्ट्रानो 'और' कैपिस्ट्रानो/बंडलर 'के बीच क्या अंतर है? मेरे बाद में मेरे कैफाइल में है। –

0

brightbox deployment gem है, जो (जादू से, कुछ अन्य व्यंजनों में) मेरे लिए बंडलर आदि संभालती है का उपयोग करते हुए मैंने पाया यह काम करता है:

https://github.com/javan/whenever/blob/master/lib/whenever/capistrano/v2/hooks.rb की सामग्री के साथ बदलें

require "whenever/capistrano" 

तो करने के लिए इसे संशोधित बंडलर के बाद लोड करें: खत्म करें इंस्टॉल करें (आपको यह कार्य हो सकता है या नहीं हो सकता है, मुझे नहीं पता कि यह मानक है)

# require "whenever/capistrano" 
# hacked whenever/lib/whenever/capistrano/v2/hooks.rb below to work with brightbox bundler installation 

require "whenever/capistrano/v2/recipes" 

# Write the new cron jobs near the end. 
after "bundler:install", "whenever:update_crontab" 
# If anything goes wrong, undo. 
after "deploy:rollback", "whenever:update_crontab" 
संबंधित मुद्दे