मुझे मानक रूबी और रूबी एंटरप्राइज़ दोनों के साथ एक स्टेजिंग सर्वर मिला है। चूंकि मानक रूबी एक महत्वपूर्ण मणि स्थापित करने से इंकार कर देता है, इसलिए मुझे $ पाथ सेट करना होगा ताकि रूबी/मणि/रेक/आदि। हमेशा आरईई संस्करणों का संदर्भ लें। और चूंकि मैं अपनी मशीनों पर तैनात करने के लिए कैपिस्ट्रानो का उपयोग करता हूं, इसलिए मुझे इसे कैपिस्ट्रानो में करने की ज़रूरत है।कैपिस्ट्रानो: क्या मैं पूरे कैप सत्र के लिए एक पर्यावरण चर सेट कर सकता हूं?
मैं एक बार पर्यावरण परिवर्तक कैसे सेट कर सकता हूं, और यह कैपिस्ट्रानो सत्र में जारी रहता है?
1) bashrc फ़ाइलों में करना आसान है, लेकिन Capistrano bashrc फ़ाइलों को नहीं पढ़ता है।
2) मैं का उपयोग करेंगे Capistrano के
default_environment['PATH'] = 'Whatever'
लेकिन Capistrano तरह
env PATH=Whatever command arg ...
इन वातावरण चर का उपयोग करता है और वे खो रहे हैं जब भी मुझे एक अन्य सुरक्षा निष्पादन env के लिए पारित भीतर काता है। जब आप सूडो का उपयोग करते हैं। ,
[[email protected] trunk]$ env VAR=hello ruby -e "puts ENV['VAR']"
hello
[[email protected] trunk]$ env VAR=hello sudo ruby -e "puts ENV['VAR']"
nil
3) और मैं बैश निर्यात आदेश का उपयोग नहीं कर सकते हैं के रूप में इन भी खो रहे हैं - Capistrano ऐसे ही प्रत्येक आदेश के लिए एक नया खोल (या कुछ शुरू करने लगता है), और: जो थोड़े महत्वपूर्ण है कि खो जाता है, भी:
cap> export MYVAR=12
[establishing connection(s) to xxx.xxx.xxx.xxx]
cap> echo $MYVAR
** [out :: xxx.xxx.xxx.xxx]
cap>
4) मैं Capistrano के साथ खिलवाड़ की कोशिश की है: खोल और: Pty विकल्प के रूप में अच्छी तरह से (और अन्य तरीकों के साथ संयोजन में), लेकिन कोई किस्मत, या तो।
तो - ऐसा करने का सही तरीका क्या है? ऐसा लगता है कि यह एक बुनियादी कार्य है कि इसे पूरा करने का एक बहुत ही आसान तरीका होना चाहिए, लेकिन मैं विचारों से बाहर हूं। किसी को?
अग्रिम धन्यवाद!
अच्छी कॉल में जोड़ा - मुझे पता नहीं था कि सूडो ने स्थानीय पर्यावरण को अस्पष्ट कर दिया था। ऐसा लगता है कि -ई विकल्प को जोड़ना ज्यादातर मामलों को हल करता है, लेकिन $ PATH विशेष है ([संदर्भ] (http://stackoverflow.com/questions/257616/sudo-changes-path-why))। मैं इसके साथ थोड़ा और खेलूँगा और आपसे वापस आऊंगा। चीयर्स! –