当我无法确定使用哪个程序安装 Ruby 时,如何升级 Ruby 版本?

gke*_*ley 1 ruby macos

我想ruby在 OS X 上升级,但是当我运行时,brew upgrade ruby我得到了Error: ruby not installed. 当我运行时,which ruby我得到了/usr/bin/ruby,所以我知道我的系统上存在 ruby​​,但我认为该错误意味着我没有通过 Homebrew 安装它。

我想知道的是:

/usr/bin/ruby1)我是否正确地认为存在但brew upgrade ruby产生的事实Error: ruby not installed意味着已安装Ruby,但是使用Homebrew以外的工具安装的?

2)如果是这样,我怎样才能知道Ruby是如何安装在我的系统上的?

3)我应该如何升级Ruby?

Ami*_*pta 5

/usr/bin/ruby我是否正确地认为存在但brew upgrade ruby产生的事实Error: ruby not installed意味着已安装 Ruby,但使用 Homebrew 以外的工具安装?

是的。

如果是这样,我怎样才能知道 Ruby 是如何安装在我的系统上的?

它配备了 OS X(目前)。不过,苹果计划弃用这一点,请参阅此处

我应该如何升级 Ruby?

brew install ruby这是基于意见的,但我会用brew 来管理它,这意味着你也需要它。为了确保您使用brew installed ruby​​ 而不是系统 ruby​​,您可以添加类似 add 的内容:

export PATH=/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.6.0/bin:${PATH}
Run Code Online (Sandbox Code Playgroud)

给你的~/.bash_profile. 具体来说,您需要添加 (a) 提供 ruby​​ 及其所有相关可执行文件的路径,以及 (b) 通过安装的可执行文件存在的brew路径。gem

对于 (a),查看 的输出brew info ruby,例如我得到:

...

If you need to have ruby first in your PATH run:
  echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile

...
Run Code Online (Sandbox Code Playgroud)

因此添加/usr/local/opt/ruby/bin到路径中。如果您进入ls该目录,您不仅会看到ruby可执行文件,还会看到irbgembundlerake和其他一些内容。因此,当您运行bundle installor时gem install,就会使用它。

对于 (b),您需要知道安装的 gem 可执行文件放在哪里。该gem env命令可以帮助您:

$ gem env | grep 'EXECUTABLE DIRECTORY'
  - EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/2.6.0/bin
Run Code Online (Sandbox Code Playgroud)

因此,添加了第二条路径,/usr/local/lib/ruby/gems/2.6.0/bin$PATHmy 中的 my ~/.bash_profile