RVM生产准备好了吗?

时间:2011-05-03 00:56:15

标签: ruby rvm

RVM非常适合在本地计算机上进行开发。但它在生产机器上是否安全?

9 个答案:

答案 0 :(得分:123)

我为生产构建了RVM,并在稍后添加了开发人员的“细节”。 如果您想了解更多信息,请阅读网站上的文档,并在EDT大部分时间的某个时间在irc.freenode.net上的#rvm中与我交谈。

答案 1 :(得分:22)

由于RVM只是在现有Ruby实现之间进行下载,隔离和切换的一种奇特方式,我认为它就像你正在运行的ruby实现一样准备就绪。

基本上,所有RVM都指向特定Ruby实现的路径。这是完全当您使用* nix发行版的Ruby实现时会发生什么。唯一真正的区别是你的路径将被重写,这样当你运行ruby -v时,它将从你当前用户的.rvm目录而不是像/ usr / local / bin这样的全局系统目录运行ruby。 / p>

我会更进一步地说,使用RVM比使用通常安装在* nix发行版中的更好的解决方案,因为它可以轻松地按用户沙箱化特定的ruby实现。 RVM还可以在您的生产应用程序上尝试切换红宝石(即,从1.8.7到1.9.2),同时保持一个可靠的回滚策略,如果某些东西不能正常工作的话。它还可以更容易地保持旧版应用程序在一个版本的Ruby上运行,同时将新应用程序切换到更新版本。

答案 2 :(得分:8)

我不同意,特别是如果您正在使用任何类型的自动化生产过程(木偶,厨师,雾等)并且您拥有一台或两台以上的机器。

我们遇到过这样的问题:RVM的X版本以与RVM版本Y完全不同的方式工作(不同的默认Rubygems版本,不同的默认gemset配置,完全更改系统范围的安装工作方式),打破了我们的自动配置流程

如果您正在开发并随时调整内容,那么这不是问题,如果您有无人参与的脚本/木偶安装,那么这是一个杀手锏。我们通过锁定特定的RVM版本解决了这些问题,但我记得与Wayne进行了一次对话,他对此不予理睬。如果我们继续在prod中使用RVM,我们实际上将它打包成一系列.debs(一个用于安装,一个用于每个Ruby)。

默认情况下.rvmrc提示并且只能在homedir~ / .rvmrc(而不是系统范围内)中覆盖的方式也没有用。

我实际上喜欢RVM在开发过程中改变并以这种方式做事的方式 - 没有什么比向后兼容性所阻碍更糟糕了。然而,这种方法在生产/ staging / uat / test中花费了我们一些时间(以及拔毛)。

答案 3 :(得分:6)

RVM显然是一种合理的制作工具

你知道,我曾经做过类似的 rvm is a development tool 评论,并被告知rvm最初是一个制作工具。

因此,RVM会使您的生产环境变得更加复杂,这很糟糕,但它使它更加孤立和分隔,人们称之为模块化的语言,这很好。

最后,只要您测试部署,我就不会看到任何类型的静态配置本身都是“不安全”。

答案 4 :(得分:5)

这完全取决于您如何安装RVM,单用户或多用户。安装RVM系统可以在不同的红宝石之间造成大量混乱。最好选择单个用户,减去RVM在它的意图上做得很好。

答案 5 :(得分:3)

我想这个问题有两个部分:

  1. RVM是否适用于生产机器,而不是开发机器?
  2. RVM是否可以在生产机器上使用足够可靠的软件?
  3. 对于(1),Wayne E. Seguin表示它打算用于生产机器。对他的意图提出异议毫无意义。

    对于(2),我不太确定。在生产机器上使用具有新版本号every couple of days的软件是否合适?此外,RVM删除了我的整个〜/ ruby​​目录。对Wayne来说,当我告诉他这件事的时候,他当晚修好了,但这并没有对我说“生产准备好”。

    编辑:我只是read about bumblebee删除了/ usr,我只想说 - 可能会更糟! LOL。

答案 6 :(得分:2)

我已经在生产网络服务器上使用RVM超过一年了,现在没有问题。我保持最新状态,频繁运行rvm get head。零问题,永远。 :)

答案 7 :(得分:1)

是的,我在生产机器上使用了rvm,并设置了puppet模块以将rvm作为默认系统ruby以及gemsets等安装。

如果您在一台服务器上运行多个应用程序,rvm可以帮助您将所有应用程序gemsets(和ruby版本)完全分开。但是,如果您在服务器上只运行一个应用程序,则安装rvm可能没有那么多好处。

答案 8 :(得分:1)

我在运行rails应用程序的所有生产服务器上都使用了RVM。 RVM并没有让我失望。