【发布时间】:2011-06-22 13:45:19
【问题描述】:
为什么我应该/不应该使用 RVM?
我是 ruby 语言和整个服务器的新手。我在使用 RVM 安装时遇到了一些问题……所以我现在倾向于不使用它,但它似乎可以让安装过程变得更容易?
我很想听听您对 RVM 的体验以及您对维护服务器的看法。
【问题讨论】:
为什么我应该/不应该使用 RVM?
我是 ruby 语言和整个服务器的新手。我在使用 RVM 安装时遇到了一些问题……所以我现在倾向于不使用它,但它似乎可以让安装过程变得更容易?
我很想听听您对 RVM 的体验以及您对维护服务器的看法。
【问题讨论】:
即使您不想同时安装多个版本,RVM 也很有用。我是 ruby 爱好者(白天是 PHP :(),我没有理由要使用旧版本,但我仍然使用 RVM。
安装 ruby 很痛苦。从包管理器(至少在 ubuntu 中)获取它会为您提供一个过时的版本,该版本会更改默认安装目录。除了问题,我什么都没有。
所以你会想,“我只会从源代码构建它”。从源代码构建需要获取大量依赖项和配置选项。很多时候,我构建 ruby 只是发现我忘记启用 SSL 支持或 readline 支持。
RVM 负责所有这些。在 3 个左右的命令中,你就有了一个完美构建的 ruby 版本。
我什至没有介绍 RVM 如何为您管理多个 ruby 安装,这是它的杀手级功能。如果您有这种需求,真的没有其他明智的解决方案。
【讨论】:
bin 文件仍然可以访问,但您必须完全限定路径才能访问它们,因为只有最新版本的二进制文件在您的路径上。所以在可执行文件的情况下,rvm 可能会更好。
RVM 非常棒,因为它允许您安装不同的版本,而无需触及系统的默认 Ruby 安装。它与 Python 中的 virtualenv 非常相似。
拥有 RVM 的另一个巨大优势是 gemsets - 您可以创建尽可能多的 gemsets,这些 gemsets 是 ruby 的版本和补丁级别所独有的。
我已经赞美了它的一些virtues here,你也应该see this blog post。
在维护服务器方面——让我们以乘客安装为例;请记住,Passenger 是作为 gem 安装的,因此使用 rvm 的好处是您可以安装多个乘客,并绑定到不同版本的 ruby。当然,通常情况下,您将让Passenger 一次在一个版本上运行,尽管有多种方法可以让Passenger 运行在不同的ruby 版本上。
【讨论】:
我为不同的项目使用不同的 Ruby 版本(这就是 .rvmrc 非常方便的地方)。一些部署环境对 1.9 感到满意,而由于某些原因,有一些旧版服务器使用 1.8。另外,有时我想启动一个特定版本的 ruby 来比较它们的工作方式。 RVM 为我做了这一切。
【讨论】:
当您第一次习惯 Ruby 时,可能并不完全需要它。也就是说,它的作用是为您未来的成功做好准备。因为一旦你上瘾了,你可能最终会玩需要从 MRI 1.8.x 迁移到 1.9.x 的项目。或者从 1.9.x 到 JRuby 1.6.x。我的经验是这种情况不规律地发生,但当它发生时,没有什么可以替代 RVM。
除此之外,我经常使用的另一个最大功能是能够分割一个特定版本。所以我可以有一个“稳定”宝石的环境和一个“不稳定”宝石的环境。例如,当 Rails 3.1 处于候选发布模式时,我有一个用于 1.9.2 的主工作区和一个用于 Rails 3.1.rc 的单独空间? 1.9.2 上的宝石。这使我可以继续开发我的主要 Rails 3.0 内容(在 CLI 中使用一个命令),而无需指定相应 rails bin 文件的完整文件路径以使用旧文件。
【讨论】:
如果您使用的是基于 Debian 的平台,其中打包程序/策略会导致非常糟糕的默认安装,那么您将获得更好的 rvm 体验。
【讨论】: