2011-06-17 44 views
4

请理解,我并不想抨击RVM。我只想了解为什么它在Ruby社区中如此受欢迎。RVM在Linux上有什么优势?

似乎有两个主要原因使用RVM--在不同版本的Ruby之间管理/切换,并为每个项目管理特定的gemset。然而,似乎有在Linux上实现同样的事情更清洁的方式:

  • 我可以通过 定期包管理器安装在仓库不同Ruby版本 ,或从源代码构建 和安装的软件包。 我可以使用 update-alternatives(至少在Debian,Ubuntu,Fedora上)在不同版本之间切换。
  • 我可以使用Bundler来管理不同项目的 宝石套件,如this blog post中概述的 。

鉴于上述情况,我很困惑为什么我想用RVM来管理Ruby版本和宝石。使用bash脚本在我的系统上在软件包管理器外部安装软件的想法让人觉得很骇人,这种感觉被this blog post支持。

不是Mac用户我在这里完全猜测,但我认为这可能是OS X在Ruby社区中非常流行。如果在OS X上没有用于切换ruby版本的update-alternatives这样的系统,RVM可能是最好的解决方案,并且这个想法也延续到linux上。就像我说的,这只是一个猜测。

那么为什么RVM如此受欢迎,为什么我应该比Debian或Ubuntu上的常规软件包管理器+ Bundler更喜欢它?

回答

3

如果您需要使用不同版本的Ruby和像我这样的特殊Rails来管理许多项目(我有3个项目需要使用Rails 2.3.5,Rails 3.0.5和Rails 3.1 rc1),RVM是必要的解决方案。正如你可能知道Rails 2.3.x没有捆绑器支持并使用旧的宝石,所以版本管理是使开发更容易的方法。我希望我能帮助你。

+0

您可以在Rails 2.3中使用Bundler并付出一定的努力:http://gembundler.com/rails23.html – coreyward 2011-06-17 13:49:32

+1

当您必须管理许多具有相同宝石但不同版本的项目时 - 请相信我 - 这很难 – bor1s 2011-06-17 13:50:45

3
  1. RVM是便携式
  2. update-alternatives作品全球范围内,RVM工作在壳/脚本方面 - 我想这是modyfying ENV路径。现在想象在一台服务器上有两个应用程序:一个1.8.7和另一个1.9.2
  3. Ruby EE的使用需要手动安装 - 使用RVM只需一个命令即可安装它。
  4. 我在Debian中只有1.8.7或1.9.2的宝石混合宝石问题太多了。
  5. 简单备份 - 只需复制.rvm dir。
  6. 一致的群集(相同平台) - 只需共享一个.rvm dir。