2011-03-04 15 views
7

में आरवीएम जेमसेट का चयन करें मैं यह निर्धारित करना चाहता हूं कि कौन सा रूबी दुभाषिया और कौन सा रत्न मेरी रूबी स्क्रिप्ट के शीर्षलेख के अंदर उपयोग करना है।स्क्रिप्ट हेडर

#!/usr/bin/env source /usr/local/lib/rvm && rvm [email protected] 

की लाइनों के साथ कुछ बढ़िया होगा।

यह कैसे करें इस पर कोई सुझाव? इस सार बाहर

उत्तर

4

इस तरह यह करने के लिए है ...

#!/usr/bin/env /usr/local/bin/[email protected] 
+0

हम्म, मेरे सिस्टम में से कोई भी/usr/local/bin – Kevin

+0

में कोई सिम्लिंकेड रूबी नहीं है, हो सकता है कि वे आपके सिस्टम पर कहीं और हों? – tcurdt

0

की जांच:

https://gist.github.com/343545

HTH

+0

लिंक के लिए धन्यवाद ... दुर्भाग्य से यह वास्तव में आगे अंतर्दृष्टि – tcurdt

+0

प्रदान नहीं करता है:

अंत में यहाँ एक उदाहरण स्क्रिप्ट है कि मैं एक साथ रखा है, जिसमें मैं एक cgi-bin निर्देशिका में चलाने है क्षमा करें, मैंने आपके प्रश्न को गलत तरीके से पढ़ा है ... – macarthy

5

tcurdt पद एक छोटे से भ्रामक है। मेरे सिस्टम पर मैंने रूट पर सिस्टम पर आरवीएम (री, 1.8.7, & 1.9.2 rubies) सेट अप किया है। मेरे/usr/स्थानीय/बिन इस तरह देखा:

lrwxrwxrwx 1 root rvm 46 Mar 13 06:50 ree-1.8.7-2011.03 -> /usr/local/rvm/wrappers/ree-1.8.7-2011.03/ruby 
lrwxrwxrwx 1 root rvm 44 Mar 13 06:42 ruby-1.8.7-p334 -> /usr/local/rvm/wrappers/ruby-1.8.7-p334/ruby 
lrwxrwxrwx 1 root rvm 44 Mar 11 22:42 ruby-1.9.2-p180 -> /usr/local/rvm/wrappers/ruby-1.9.2-p180/ruby 

मैं tcurdt के उदाहरण के रूप में एक gemset सिस्टम कहा जाता नहीं था। तो मैं उचित तरीके से मानना ​​है कि प्राप्त करने के लिए क्या आप के बाद तो जैसा होगा कर रहे हैं:

#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180 

क्या rvm में से कुछ स्पष्टीकरण यहाँ क्या कर रहा है: rvm रैपर स्क्रिप्ट बनाता है (/ usr/स्थानीय/rvm/रैपर/*) जो GEM_PATH & GEM_HOME जैसी चीजें सेट करता है। इनकी आवश्यकता है ताकि रूबी के एक विशिष्ट संस्करण के हिस्से के रूप में रत्नों को सही ढंग से लोड किया जा सके। जब आप आरवीएम की सिस्टम स्थापना करते हैं, तो इन रैपर स्क्रिप्ट के लिए लिंक /usr/local/bin के अंतर्गत बनाए जाते हैं। यदि आपने स्वयं के रूप में आरवीएम स्थापित किया है तो वे यहां स्थित हैं: $HOME/.rvm/bin

/usr/bin/env के साथ शेबांग लाइन (#!/....) को उपसर्ग करना महत्वपूर्ण है। यदि आप इसे सीधे रूबी पर आज़माएं और इंगित करें (उदाहरण के लिए #!/Usr/local/bin/ruby-1.9.2-p180) पर्याप्त नहीं होगा। इसका कारण यह है इन रैपर वास्तव में गहरे लाल रंग का दुभाषिया नहीं हैं, वे शेल स्क्रिप्ट एक वातावरण सेटअप सोर्सिंग कि कर रहे हैं पूर्व रूबी दुभाषिया के लिए एक तर्क के रूप अपनी स्क्रिप्ट बुला है, इसलिए की तरह हैं:

source "/usr/local/rvm/environments/ruby-1.9.2-p180" 
exec ruby "[email protected]" 

[email protected] अपने खोल है स्क्रिप्ट नाम रूबी को पास किया जा रहा है।

#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180 

puts "Content-Type: text/html" 
puts 
puts "<html>" 
puts "<body>" 
puts "<h1>Hello Ruby!</h1>" 
puts "<p>shebang: #!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180</p>" 
puts "<p>RUBY_VERSION: " + RUBY_VERSION + "</p>" 
puts "<p>RUBY_PLATFORM: " + RUBY_PLATFORM + "</p>" 
puts "<p>RUBY_RELEASE_DATE: " + RUBY_RELEASE_DATE + "</p>" 
puts "</body>" 
puts "</html>" 
+0

जबकि आप बहुत विस्तृत हैं कि प्रश्न का सही उत्तर नहीं है। मैं सिर्फ एक निश्चित रूबी संस्करण का चयन नहीं करना चाहता बल्कि रत्न भी! सौभाग्य से आरवीएम न केवल रूबी संस्करण के लिए बल्कि रत्नों के लिए रैपर स्क्रिप्ट बनाता है। बेशक यदि आपके पास "सिस्टम" रत्न नहीं है तो इसे चुनने का कोई मतलब नहीं है;) बीटीडब्लू: बस रूबी संस्करण का चयन करके आप आरवीएम-खोल – tcurdt

+0

का उपयोग भी कर सकते हैं आरवीएम-खोल नहीं देखा।तो कोई भी उपयोग कर सकता है: #!/Usr/bin/env/usr/local/bin/rvm-shell? आप किस रूबी और रत्न के साथ खत्म हो जाएगा? – slm

5

#!/usr/bin/env rvm [email protected] do ruby

+0

यह इसे पूरा करने के सबसे साफ तरीके की तरह लगता है। –

+0

यह मेरे लिए काम नहीं करता है। आरवीएम 1.26.11, उबंटू 15.04 –

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