2011-10-12 13 views
15

sh के बजाय बैश का उपयोग करने के लिए कैपिस्ट्रानो रन कमांड में खोल कैसे सेट कर सकता हूं? मैं RVM स्थापित करने के लिए कोशिश कर रहा हूँ और मैं आदेश पर अमल करने की जरूरत है: के रूप मेंकैपिस्ट्रानो में चलाने के लिए मैं शैल को बैश करने के लिए कैसे सेट करूं?

run "bash < <(curl -L http://bit.ly/rvm-install-system-wide)" 

:

task :install_rvm, :roles => :server do 
    apps = %w(bison openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev  libyaml-dev sqlite3 libsqlite3-0 libxml2-dev libxslt-dev autoconf subversion libcurl4-openssl-dev) 
    apt.install({:base => apps}, :stable) 
    run "bash < <(curl -L http://bit.ly/rvm-install-system-wide)" 
    run "rvm install 1.9.2".sh 
    run "rvm use [email protected]" 
    run "gem install awesome_print map_by_method wirble bundler builder pg cheat" 
    run "gem install -v2.1.2 builder" 
    # modify .bashrc 
end 

लेकिन मैं सिर्फ यह काम करने के लिए क्योंकि Capistrano निष्पादित हो रहा है पाने के लिए प्रतीत नहीं कर सकते हैं:

"sh -c 'bash < <(curl -L http://bit.ly/rvm-install-system-wide)'" on [email protected] 

मैं Capistrano मणि में देखते हैं command.rb फ़ाइल

जैसे कुछ कोड है

लेकिन यह काम

+0

ऐसा लगता है कि यह 'क्रियान्वित है के माध्यम से' श -c 'बैश ...' 'bash'। यह आपकी आवश्यकताओं को पूरा नहीं करता है? (अस्वीकरण: मुझे Capistrano के बारे में कुछ भी नहीं पता।) –

उत्तर

1

:shell चर सेट करने का प्रयास करने के लिए options[:shell] पारित करने के लिए कैसे मेरे लिए स्पष्ट नहीं है।

set :shell, '/usr/bin/bash' 
+0

यह कैपिस्ट्रानो में काम नहीं कर रहा है, खोल केवल 'default_run_options' के साथ बदला जा सकता है। –

33

सेट: खोल काम कर रहा है नहीं है, लेकिन यह काम करता है:

default_run_options[:shell] = '/bin/bash'

+7

ध्यान दें कि आरवीएम के लिए, आपको '/ bin/bash --login' – nateware

+0

+1 की आवश्यकता हो सकती है, मैं आपको चुंबन दे सकता हूं ... –

8

ऐसा लगता है कि आप rvm-capistrano मणि की जरूरत है। एक अन्य विकल्प rvm-Capistrano द्वारा इस्तेमाल किया प्रणाली का उपयोग करने के लिए हो सकता है, वह यह है कि:

set :default_shell, '/bin/bash -l' 
+0

बढ़िया, मुझे तैनाती के लिए CentOs लक्ष्य प्रणाली पर बहुत मदद मिली – Schubie

+1

यह मेरे लिए बाध्य में अच्छा काम करता है उबंटू 14.04 एलटीएस पर। बहुत बहुत धन्यवाद! –

0

तुम भी निम्न सिंटैक्स का उपयोग कर सकते हैं:

run "bash -c <command>" 

यह --login के साथ पर्यावरण की स्थापना के लिए विशेष रूप से उपयोगी है स्विच, उदाहरण के लिए:

run "bash --login -c rvm use 1.9.2 

... और यह Capistrano 3.x में भी काम करता है ...!

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