10

在 Xcode 之外,我使用特定版本的 Ruby,使用 RVM 来管理多个 Ruby 安装。

Apple 的命令行开发工具安装 Ruby,/usr/bin/ruby版本为 1.8.7。

我通过 RVM 使用 1.9.3。

有没有办法强制 Xcode 在运行其运行脚本构建阶段时使用我的 1.9.3 安装?

我已经尝试将 Shell 路径设置为我的特定 Ruby 的完整路径,但这似乎没有什么不同,我的意思是我在 1.9.3 中安装的特定 Gems 对我不可用/不可见在 Xcode 中运行时的脚本。

如果我在命令行上运行我的项目xcodebuild,则运行脚本阶段使用我的特定 Ruby,因为它是在我的 shell 环境中运行的(即使项目文件中的 shell 路径设置为/usr/bin/ruby,它仍然使用我的 1.9.3) .

如何让 IDE 使用我的 1.9.3 Ruby 安装?

4

2 回答 2

6

我遇到了同样的(好吧,更糟糕的)问题,下面的代码对我有用。要意识到的关键是,在命令行上,您正在使用<something>/bin/rvm,但在 shell 脚本中,为了让 rvm 改变环境,您必须使用一个函数,并且您必须首先将该函数加载到您的 shell 脚本中打电话source <something>/scripts/rvm。更多关于这一切的信息

这段代码也有要点

#!/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 .

作为一个提示,我发现在文件中嵌入 shell 代码很糟糕project.pbxproj。除了最琐碎的事情之外,我的实际运行脚本步骤通常只是对外部脚本的单行调用:

在此处输入图像描述

于 2014-10-07T14:51:22.493 回答
4

在 Xcode 中的脚本开头试试这个:

source "$HOME/.rvm/scripts/rvm"
于 2013-03-27T07:10:41.877 回答