使用 Homebrew 管理 Ruby
macOS 上的 Ruby 环境管理我相信是大多数软件开发都会遇到的一个问题,如果我们需要同时管理多个 Ruby 版本的话,有 rbenv
和 rvm
的方式,具体的操作网上已有大量的文章供我们学习,本文不再做赘述。今天我们来看一下如何使用 Homebrew
来管理我们的 Ruby。
什么情况下我们可以使用 Homebrew
来管理我们的 Ruby 环境?
- 你只是学习一下 Ruby 语言
- 你只是想编译一个项目(例如我们使用 cocoapods 来管理我们的项目)
在使用之前,首先我们需要知道用 Homebrew
来管理 Ruby 有什么缺点。
- 当你升级其他
Homebrew
包时,Homebrew 可能会将 Ruby 更新到新版本 - 你不能非常轻松的在多个 Ruby 版本之间频繁切换
如果你的需求不满足上述描述的话,特别是需要经常切换 Ruby 版本,那么 Homebrew
的方式就不是太适合。
macOS 系统的 Ruby
macOS 预装了“系统Ruby”。macOS Monterey 包含 Ruby 2.6.8,这不是最新版本。使用 macOS 系统 Ruby 不是一个好主意(参见:Do Not Use the MacOS System Ruby)。系统 Ruby 的 which ruby
和 ruby -v
如下所示:
我们保留系统 Ruby,使用 Homebrew
来安装最新版 Ruby。
安装 Homebrew
如果你还没安装 Homebrew
的话,请先安装 Homebrew。
安装 Ruby
安装最新版的 Ruby
1 | $ brew install ruby |
配置环境
安装完成后,此时我们输入 which ruby
命令发现使用的还是系统 Ruby,因为我们还需要配置一下 $PATH
环境变量。这里使用 zsh
来举例。
我们执行如下命令来编辑我们的 .zshrc
文件。
1 | $ open -e ~/.zshrc |
如果安装过 vs code
的话,我们可以使用如下命令来编辑:
1 | $ code ~/.zshrc |
在 Intel 芯片的电脑上我们在 zshrc
文件末尾加上如下的配置:
1 | if [ -d "/usr/local/opt/ruby/bin" ]; then |
在 Apple 芯片的电脑上我们添加下列配置:
1 | if [ -d "/opt/homebrew/opt/ruby/bin" ]; then |
这会将 Homebrew 安装的 Ruby 设置为比系统 Ruby 有更高的优先级,并添加用于 Ruby gem 的目录。
接下来重新打开终端,以便识别对 .zshrc
的更改。
锁定 Ruby 更新
当您升级其他 Homebrew 包时,Homebrew 可能会将 Ruby 更新到新版本。如果你不想让 Homebrew 的 Ruby 版本被新版本取代,你可以使用
1 | $ brew pin ruby |
来阻止对 Ruby 的更新。
确认 Ruby 的安装
1 | $ echo $PATH |
在 Apple 芯片上, 你将看到 /opt/homebrew/
, 在 Intel 芯片上, 你将看到 /usr/local/
。
你可以使用 brew list
命令查看安装了哪些版本的 ruby
1 | $ brew list |
你也可以使用 brew deps --tree --installed
命令查看为 ruby 安装了哪些依赖。
1 | $ brew deps --tree --installed |
执行命令 ruby -v
验证是否安装了最新版的 Ruby。
参考文档
- Install Ruby 3.1 · macOS