लॉन्चक्ट्ल - सिस्टम के बजाय आरवीएम का उपयोग करें निष्पादित स्क्रिप्ट में रूबी?


0

मेरे पास एक लॉन्चरल नौकरी है जिसे मैं इस तरह परिभाषित करता हूं:

<key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>-c</string>
        <string>~/projects/script.sh</string>
    </array>

जब मैं script.sh को मैन्युअल रूप से चलाता हूं, तो स्क्रिप्ट ठीक काम करती है, क्योंकि यह रूबी के वर्तमान में कॉन्फ़िगर किए गए rvm संस्करण का उपयोग करती है। जब मैं इसे लॉन्चर के माध्यम से चलाता हूं, तो प्रणाली रूबी के संस्करण का उपयोग किया जाता है, जो स्क्रिप्ट को तोड़ता है। रूबी के सही संस्करण के साथ चलने के लिए मुझे यह स्क्रिप्ट कैसे मिल सकती है?

जवाबों:


0

परिवर्तन script.sh पर्यावरण चर सेट करने के लिए PATH इससे पहले कि यह निर्भर करता है किसी भी कार्यक्रम को आमंत्रित करता है PATH सही ढंग से सेट किया जा रहा है।


एकमात्र समस्या यह है कि आर.वी.एम. गतिशील वर्तमान रूबी को इंगित करता है, जो कहीं भी हो सकता है, उदा। ~/.rvm/rubies/ruby-1.9.3-head/bin/ruby। कोई निश्चित पथ नहीं है जिसे शामिल किया जा सकता है।
slhck

0

सबसे अच्छा तरीका एक आरवीएम "रैपर" का उपयोग करना होगा, जो माणिक वातावरण को लोड करता है और फिर स्क्रिप्ट चलाता है। अधिक जानकारी के लिए:

$ rvm help wrapper

उदाहरण:

$ rvm wrapper 2.0.0 hello
$ hello_ruby -e "puts RUBY_VERSION"
$ hello_rake -T
$ which hello_ruby # => /Users/me/.rvm/bin/hello_ruby

...आदि...

और आप अपने लॉन्चड कॉन्फिगर में निष्पादन योग्य के रूप में "/User/me/.rvm/bin/hello_ruby" का उपयोग कर सकते हैं, और rvm वातावरण आपके लिए सेट किया जाएगा।

यह भी सटीक रूबी संस्करण को निर्दिष्ट किए बिना करने के लिए वास्तव में अच्छा है ताकि जब एक पैच स्तर सामने आए, तो आरवीएम को अपग्रेड करें और आपके रैपर लॉन्च किए गए फ़ाइलों को अनलोड / लोड करने की आवश्यकता के बिना नए पैचेड रूबी को इंगित करेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.