我不确定这两个工具之间的区别。似乎有很大的重叠,但我一直在使用RVM并面临一些错误兼容性问题。
Bundler做什么RVM没有?
答案 0 :(得分:11)
它们用于不同的目的。 RVM创建一个沙箱来管理您的Ruby安装。作为其中的一部分,它还允许您定义gemsets。
Bundler不管理你的Rubies,它适用于当前选择的Ruby。
因此,我认为您应该将RVM视为开发环境的配置管理器,并将Bundler视为应用程序的gem管理器。
编辑:其他想法 -
无论我们是否使用RVM,通常我们必须使用gem install blah
为我们想要使用的每个gem手动加载我们将要用于app的所有宝石。
我最终手动管理多个红宝石的宝石。一旦安装完毕,我就可以使用RVM创建gemsets,但是如果没有安装,RVM将不会自动检索特定版本的gem,或者如果它被删除则再次获取它。因为RVM更关心你的Ruby环境,所以它主要将宝石的版本保留给gem
和我们。
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。