【发布时间】:2021-05-12 22:58:22
【问题描述】:
我正在使用 macOS Big Sur。当我检查 Ruby 是否可用时,我看到:
$ ruby -v
ruby 2.6.3p62
检查which:
$ which ruby
/usr/bin/ruby
我可以看到 Ruby 已预安装在 macOS 上。但有人告诉我,“不要使用系统 Ruby。” 为什么?
【问题讨论】:
我正在使用 macOS Big Sur。当我检查 Ruby 是否可用时,我看到:
$ ruby -v
ruby 2.6.3p62
检查which:
$ which ruby
/usr/bin/ruby
我可以看到 Ruby 已预安装在 macOS 上。但有人告诉我,“不要使用系统 Ruby。” 为什么?
【问题讨论】:
不要使用系统 Ruby!
以下是不使用 Ruby 进行开发的原因:
gems 的默认位置是系统 Ruby 目录 /Library/Ruby/Gems/2.6.0,因此您需要成为超级用户才能安装 gems(并且您真的不应该更改此文件夹)
您可以使用 sudo 来安装 gem,但这是一个安全风险(gem 安装可能会运行恶意代码)
使用 Bundler 是管理 gem 版本和依赖项的最佳实践(项目可能使用不同的 gem 版本;或者一个项目可能使用需要不同版本的公共依赖项的不同 gem)
您可以使用 --user-install 参数安装 Bundler 来设置 gem 目录,但这不是常见的做法
最好使用最新版本的 Ruby 启动项目,系统 Ruby 为 2.6.3
如果您有多个项目并且不能一次更新它们,您将需要多个 Ruby 版本和一个版本管理器(请参阅我的指南 Install Ruby on a Mac,它比较了版本管理器并展示了如何使用 asdf 安装 Ruby或 chruby 或 Homebrew)
预装的 Ruby 已被 Apple 弃用,可能会在未来的 macOS 版本中消失
一些开发人员使用系统 Ruby 来运行系统管理脚本。没关系,只要您不通过尝试更新或添加 gem 来更改系统 Ruby。请记住,系统 Ruby 是为 macOS 准备的,而不是为你准备的。对于开发,请使用 Homebrew 或版本管理器安装 Ruby。
【讨论】: