MacOS的Ruby版本管理器的比较

610 阅读3分钟

A Comparison of Ruby Version Managers for macOS

在这篇文章中,我将比较Mac上最流行的Ruby的版本管理器。Chruby、Rbenv和RVM,以及Asdf,一个多语言的版本管理器,和Frum,一个用Rust编写的新版本管理器。我将根据你最可能需要的东西进行推荐。

预装的Ruby不适合开发者

初次接触Ruby的人很高兴地发现Ruby已经预装在macOS上。当一个更有经验的开发者告诉他们:"不要使用Mac系统的Ruby "时,他们往往会感到失望。 我在其他地方写过关于原因的文章。简而言之,系统Ruby是为macOS而存在的,不是为你而存在的。对于运行实用脚本来说,它很好,但对于开发来说,系统Ruby已经过时了,而且如果你不小心,安装宝石会导致头痛(包括违反系统安全)。

Homebrew的一个Ruby问题

Homebrew是软件包管理器,已经成为向macOS添加开发者软件的近乎标准。Homebrew使得安装一个新的Ruby版本变得很容易,以避免依赖系统Ruby。但Homebrew有两个问题。首先,Homebrew的Ruby版本在安装其他Homebrew包时可能会自动地、意外地被更新的版本所取代(这个问题由brew pin ruby )。更重要的是,Homebrew只允许你安装一个版本的Ruby。如果你正在开发或维护一个以上的Ruby项目,你很可能需要在Ruby版本之间切换。这就是你需要一个版本管理器的地方。

用于多语言的Asdf

Asdf是一个适应多语言的版本管理器。如果你使用Ruby来开发Rails 6的网络应用程序,你需要安装Node和Yarn来构建Rails的启动程序。(Rails 7可能会消除对Node的需求,但目前还不能确定)。

因此,对于Rails开发者来说,Asdf是一个理想的版本管理器。如果你用Python、Elixir或许多其他语言开发应用程序,它也会为你提供良好的服务(见支持的语言列表)。使用Asdf有什么坏处吗?只有两个。它使用垫片来拦截常见的命令,这可能使故障排除变得困难。另外,对于某些操作来说,它可能有点慢。如果你在用多种语言开发,我建议你试试Asdf,看看你是否喜欢它。如果你发现Asdf拖慢了你的速度,可以切换到Frum,即用Rust编写的纯Ruby版本管理器。

纯粹的Ruby版本管理器

如果你只打算用Ruby开发应用程序,请在四个纯Ruby的版本管理器中选择。Chruby, Frum, Rbenv, 和RVM。四者之间的差异在于速度、复杂性以及各自切换Ruby版本的方式。让我们先来看看最古老的。RVM。

RVM

RVM是第一个流行的Ruby版本管理器。它仍然被维护和广泛使用。RVM修改了系统的cd 命令,在你改变目录时设置环境变量。为了覆盖cd 命令,RVM的安装脚本改变了shell配置文件(在较新的Mac上是~/.zshrc 文件)。

RVM正确地显示环境变量以揭示Ruby和gem的版本和位置,这可以帮助诊断问题。然而,RVM包括额外的功能,如gemsets。不再需要宝石集了,因为Bundler被添加到核心Ruby中来管理宝石的依赖关系。额外的复杂性是不需要的,所以许多开发者已经转而使用更新的版本管理器,如Rbenv、Chruby或Frum。

继续阅读SitePoint上的MacOS的Ruby版本管理器的比较