Bundler通过RVM提供什么?

时间:2011-04-28 23:51:35

标签: ruby ruby-on-rails-3 rvm bundler

我不确定这两个工具之间的区别。似乎有很大的重叠,但我一直在使用RVM并面临一些错误兼容性问题。

Bundler做什么RVM没有?

4 个答案:

答案 0 :(得分:11)

它们用于不同的目的。 RVM创建一个沙箱来管理您的Ruby安装。作为其中的一部分,它还允许您定义gemsets。

Bundler不管理你的Rubies,它适用于当前选择的Ruby。

因此,我认为您应该将RVM视为开发环境的配置管理器,并将Bundler视为应用程序的gem管理器。


编辑:其他想法 -

无论我们是否使用RVM,通常我们必须使用gem install blah为我们想要使用的每个gem手动加载我们将要用于app的所有宝石。

我最终手动管理多个红宝石的宝石。一旦安装完毕,我就可以使用RVM创建gemsets,但是如果没有安装,RVM将不会自动检索特定版本的gem,或者如果它被删除则再次获取它。因为RVM更关心你的Ruby环境,所以它主要将宝石的版本保留给gem和我们。

另一方面,Bundler确实关心RVM中缺少的那些部分。为bundler创建Gemfile时,如果指定,它将检索必要的gem和特定版本。因此,在不同的机器上安装Ruby应用程序的任务变得更加简单。将文件推送到另一台计算机,然后运行bundle install,它将完成剩下的工作。

它与Rails很好地配合使用,对我的生产文件来说是一个明智的解决方案。它将比我必须处理Perl发行版要简单得多,以便在同一主机上运行Perl应用程序。

答案 1 :(得分:3)

RVM更像是一个收容单位。虽然Bundler就像应用程序在其生命周期中需要或使用的清单(依赖管理器)(等等)。

如果你在Rails工作,你将无法逃脱Bundler。但是我一直都在使用它,所以我知道我需要什么宝石,以及其他后来进入项目的人。

RVM帮助我分离出我的红宝石,然后进一步分解为红宝石/项目。这样一来,我就没有一大堆宝石和不同的版本。

不完全是最有效的答案,但希望它有所帮助。

答案 2 :(得分:3)

直接回答你的问题...

  

Bundler做的是RVM做什么   不?

Bunlder将安装项目所需的所有宝石(使用bundler,并在Gemfile中指定所有需要的宝石)。 RVM不会这样做。

使用Gemfile,您可以指定哪些宝石组(即:开发,测试)......

捆绑商有很多像这样的“小”东西,但RVM没有。一般来说,正如上面的好人所解释的那样,RVM与bundler的目标不同。有关管理ruby运行时的RVM,而bundler则是为应用程序管理相关的gems。

答案 3 :(得分:2)

Bundler是一种管理代码中依赖关系的工具 - 即它所需的所有宝石。它将确保您在Gemfile中指定的所有gem以及任何依赖项都安装在您的系统上。它并不关心你使用的是哪个版本的ruby,它只是在你使用的任何一个解释器下为你安装宝石。

RVM是一个运行多个红宝石的工具,理论上也是多个宝石。它根本不处理你的依赖关系 - 你仍然需要安装宝石。

我的经验(我是RVM的新手),除非您需要运行多个红宝石,或者需要为不同的项目安装宝石,否则您不想使用RVM。即使您使用的是RVM,也可以使用Bundler来管理gem依赖关系,以便可以在您使用的任何代码存储库中跟踪您的Gemfile。