如何使Xcode中使用Ruby的正确版本上运行脚本时?(How to make xcode use

2019-08-19 04:17发布

在Xcode我有一个“运行脚本”创建运行Ruby脚本阶段。 然而,似乎Xcode是尝试使用默认MAC 1.8版的红宝石,而不是最新版本的运行它。 考虑到脚本需要的宝石,它与错误指向一个需要的错误和路径失败/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/

显然,在这条道路1.8是让我怀疑。

如果我打开终端,运行命令ruby -v那么它正确返回2.0.0p0我安装和使用RVM设置为默认值。

我怎么可能会Xcode中在正确的地方看? 还是我误解释这个错误?

更新:

为了让多一点的信息,这里是确切的错误,编译器抛出:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- json (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /Volumes/Macintosh HD/Documents/Projects/WesternMusicElements/WesternMusicElements/Ruby/NoteCollectionParser.rb:9
Command /bin/sh failed with exit code 1

Answer 1:

如果您有Xcode中打印出来的环境变量,IIRC,在$PATH通过Xcode的设置是不同的$PATH您在常规终端会话负载。

这使你有(至少)两个方法去解决这个问题:

  1. 您可以编辑的脚本直接指向RVM安装红宝石。 这可能是更好,如果你的脚本将不得不在多个系统上工作(即使它违背RVM如何承诺的工作)。

  2. 据克里斯·汉森的回答彼得Hosey的评论这个问题,你可以设置环境变量~/.MacOSX/environment.plist将适用于您启动的所有进程。



Answer 2:

假设你在你的项目中指定您的RVM红宝石版本(我想你应该是),我认为这是一个比现在的人更普遍适用的答案。

在广招,在你的shell脚本,你应该

# provides the rvm *function* to your shell script 
source "${SOMETHING}/scripts/rvm"

# then, for this script, the rvm function will change to
# the controlling ruby version for the pwd when this is run
rvm use .

我在这多生产准备详细讨论这个答案 。



Answer 3:

我用这个来比默认的系统解释其他的解释器中运行的Xcode:

  1. 退出Xcode中,如果它是开放的,去你的终端。
  2. 激活你要使用的RVM。
    rvm use 2.0.0p0
  3. 从终端然后打开Xcode中:
    open -a Xcode

为了验证这一点,您可以在您的构建,它记录翻译的版本,或可用宝石的东西。



Answer 4:

我也有类似的情况,但该脚本正在运行了认领线指的是系统安装的红宝石。

#!/usr/bin/ruby

我的解决方案,这可能是危险的 ,是取代/usr/bin/ruby与RVM安装一个符号链接的红宝石。

下面是我采取的步骤:

  1. 安装多用户RVM(该sudo从选项https://rvm.io/rvm/install )
  2. 我加入了rvm与设置应用(设置>用户和组)组。
  3. 注销并重新登录在确保组成员是由OS尊重。
  4. 安装我的命令行所需要的宝石。 因为我现在是凭借在作为一个RVM经理rvm组,这会影响下的东西/usr/local/rvm
  5. /usr/bin/ruby的出路和符号链接默认RVM红宝石在它的位置。 (这是危险的部分。如果节目以为他们会使用系统安装的版本可能会导致问题。)

要更换符号链接,我所做的:

sudo mv /usr/bin/ruby /usr/bin/system_ruby
sudo ln -s /usr/local/rvm/rubies/default/bin/ruby /usr/bin/ruby

这样做(在Xcode中未运行)后,下一次我建这个项目在Xcode,脚本中使用我曾与RVM安装Ruby的。



Answer 5:

你也可以做rvm use system ,其切换到默认MAC OS红宝石,然后使用sudo安装宝石。 似乎是最简单的我。



Answer 6:

我有这个问题还,因为我想用xcpretty。 我结束了在正确的宝石做的文件夹下面点以下

$RUBYPATH=$(eval ~/.rvm/bin/rvm info | grep "GEM_HOME:" | awk -F '"' '{print $2}')

无论宝石你想要将这个文件夹中。

此外,如果你只是想你红宝石主路径:

$RUBYPATH=$(eval ~/.rvm/bin/rvm info | grep "MY_RUBY_HOME:" | awk -F '"' '{print $2}')

xcpretty是斌的第一个选项在/在我的方案为波纹管。 所以对我来说我最终会做以下几点:

$RUBYPATH=$(eval ~/.rvm/bin/rvm info | grep "GEM_HOME:" | awk -F '"' '{print $2}')
RUBY_BIN_PATH=${RUBY_PATH}"/bin/" 
XCPRETTY=$RUBY_BIN_PATH"xcpretty"
eval $XCPRETTY

你可以找出你的红宝石命令事先是做哪



文章来源: How to make xcode use the correct version of ruby when running a script?
标签: ruby xcode rvm