2013-03-18 9 views
7

एक्सकोड के बाहर मैं रूबी के एक विशिष्ट संस्करण का उपयोग करता हूं, रूबी का उपयोग करके कई रूबी इंस्टॉलेशन प्रबंधित करने के लिए आरवीएम का उपयोग करके रूबी का एक विशिष्ट संस्करण उपयोग करता हूं।एक्सकोड रन स्क्रिप्ट बिल्ड चरण

ऐप्पल की कमांड लाइन देव उपकरण रूबी /usr/bin/ruby पर स्थापित करें और संस्करण 1.8.7 है।

मैं आरवीएम के माध्यम से 1.9.3 का उपयोग करता हूं।

क्या इसके रन स्क्रिप्ट बिल्ड चरणों को चलाते समय मेरी 1.9.3 स्थापना का उपयोग करने के लिए एक्सकोड को मजबूर करने का कोई तरीका है?

मैंने पहले से ही अपने विशिष्ट रूबी के पूर्ण पथ पर शेल पथ सेट करने का प्रयास किया है, लेकिन ऐसा कोई फर्क नहीं पड़ता है, जिसके द्वारा मेरा मतलब है कि मेरे 1.9.3 में स्थापित विशेष रत्न नहीं थे एक्सकोड के भीतर चलाने पर स्क्रिप्ट के लिए उपलब्ध/दृश्यमान।

अगर मैं xcodebuild कमांड लाइन पर के माध्यम से अपने प्रोजेक्ट को चलाने, भागो स्क्रिप्ट चरण मेरी विशिष्ट रूबी का उपयोग करता है, क्योंकि यह (, यह अभी भी परियोजना फ़ाइल में शैल पथ /usr/bin/ruby पर सेट किया जाता है, भले ही मेरी खोल पर्यावरण के भीतर से चलाया जा रहा है मेरा 1.9.3 का उपयोग करता है)।

आईडीई को मेरे 1.9.3 रूबी इंस्टॉल करने के लिए मैं क्या कर सकता हूं?

+0

प्रतीकात्मक लिंक बनाने नहीं चाहेंगे चाल है? उदाहरण के लिए: 'ln -s $ HOME/.rvm/bin/rvm-auto-ruby/usr/bin/ruby' – fmendez

+0

मुझे लगता है कि यह हो सकता है, लेकिन यदि संभव हो तो मैं डिफ़ॉल्ट स्थापना को बरकरार रखना चाहता हूं - और मुझे पसंद है एक समाधान जो किसी अन्य मशीन पर अपने डिफ़ॉल्ट इंस्टॉलेशन के साथ गड़बड़ किए बिना काम करेगा, (आरवीएम स्थापित करना स्पष्ट रूप से आवश्यक होगा, लेकिन अगर मैं अकेले/usr/bin इंस्टॉल को छोड़ सकता हूं तो यह आदर्श है) – Jasarien

उत्तर

3

Xcode में अपनी स्क्रिप्ट की शुरुआत में इस प्रयास करें:

source "$HOME/.rvm/scripts/rvm" 
2

मैं एक ही (अच्छी तरह से, खराब) समस्या है, और कोड है कि मेरे लिए काम किया इस प्रकार था। मुख्य बात को एहसास है कि, कमांड लाइन पर, आप rvm के लिए <something>/bin/rvm उपयोग कर रहे हैं, लेकिन एक खोल स्क्रिप्ट में, क्रम में परिवर्तित करने के लिए कि पर्यावरण, आप एक समारोह का उपयोग करना चाहिए है, और आप पहले लोड करना होगा जो source <something>/scripts/rvm पर कॉल करके आपकी खोल स्क्रिप्ट पर कार्य करता है। इस सब here पर अधिक।

यह कोड भी gisted है।

#!/usr/bin/env bash 

# Xcode scripting does not invoke rvm. To get the correct ruby, 
# we must invoke rvm manually. This requires loading the rvm 
# *shell function*, which can manipulate the active shell-script 
# environment. 
# cf. http://rvm.io/workflow/scripting 

# Load RVM into a shell session *as a function* 
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then 

    # First try to load from a user install 
    source "$HOME/.rvm/scripts/rvm" 

elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then 

    # Then try to load from a root install 
    source "/usr/local/rvm/scripts/rvm" 
else 

    printf "ERROR: An RVM installation was not found.\n" 
    exit 128 
fi 

# rvm will use the controlling versioning (e.g. .ruby-version) for the 
# pwd using this function call. 
rvm use . 

एक Protip रूप में, मैं एक project.pbxproj फ़ाइल yucky में खोल कोड को एम्बेड पाते हैं। सभी लेकिन सबसे तुच्छ सामान के लिए, मेरे वास्तविक रन स्क्रिप्ट कदम आम तौर पर सिर्फ एक पंक्ति किसी बाहरी स्क्रिप्ट के लिए बाहर कॉल:

enter image description here

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

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