如何从 ruby 脚本调用 chruby

How to call chruby from a ruby script

我正在为 bootstrap 一台新的 macbook 计算机编写 ruby 脚本。我通过自制软件安装了 chrubyruby-install。如果我从命令行调用 chruby 它会起作用。

$ chruby
* ruby-2.4.1

但是如果我像这样从 ruby 脚本中调用它。

def failing_function
  `chruby`
end

failing_function

我收到这个错误

 No such file or directory - chruby (Errno::ENOENT)

作为测试,我尝试了这个

def successful_function
    `ruby-install`
end

successful_function

我在脚本中得到与命令行相同的 ruby-install 输出。

有人知道我做错了什么吗?

深入研究后,发现 chruby 不是正确的二进制文件,而是通过调用 source /usr/local/share/chruby/chruby.sh 添加到环境中的 bash 函数。我 运行 运行 echo $SHELL 在 ruby 控制台中进行了快速测试,它确实显示它正在使用我的 zsh shell,所以不确定为什么完整未加载配置。无论如何,我通过这样做让它工作

def successful_function
  `source /usr/local/share/chruby/chruby.sh && chruby`
end

successful_function