Bundler在RVM上提供了什么?



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

Bundler做了哪些RVM没有做的事情?

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

Bundler不管理你的Ruby,它与当前选择的Ruby一起工作。

所以,我认为你应该考虑将RVM作为开发环境的配置管理器,而将Bundler作为应用程序的gem管理器。


编辑:额外的想法-

无论我们是否使用RVM,通常情况下,我们都必须手动加载我们将要用于应用程序的所有gem,使用gem install blah,对于我们想要使用的每个gem。

我最终管理我的宝石在多个红宝石手工。一旦它们安装好,我就可以使用RVM创建gem,但是如果gem没有安装,RVM不会自动检索它的特定版本,如果它被删除了,RVM也不会重新获取它。因为RVM更关心你的Ruby环境,所以它把gem的版本控制留给了gem和我们。

另一方面,

Bundler确实关心RVM中那些缺失的部分。当您为绑定器创建Gemfile时,它将检索必要的gem和指定的特定版本。因此,在另一台机器上安装Ruby应用程序的任务变得简单多了。将文件推到另一台机器上,然后运行bundle install,它将完成其余的工作。

它可以很好地与Rails一起工作,对于我的生产文件来说是一个明智的解决方案。这比我为了在同一主机上运行Perl应用程序而处理Perl发行版要简单得多。

RVM更像是一个容器单元。而Bundler就像一个清单(依赖管理器),它显示了应用程序在其生命周期中需要或使用的东西(以及其他东西)。

如果你在Rails中工作,你将无法逃避Bundler。但是我一直在使用它,这样我就知道我需要什么Gems,之后加入项目的其他人也会知道。

RVM帮助我分离我的ruby,然后进一步到ruby/项目。这样我就不会把一堆宝石和不同的版本放在一起了。

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

直接回答你的问题…

Bundler做什么RVM做什么不呢?

bundle将安装一个项目所需的所有gem(该项目使用bundler,并且在Gemfile中指定了所有需要的gem)。RVM不这样做。

使用Gemfile你可以指定哪些gem组(例如:development, testing)…

有很多像这样的"小"的事情,捆绑器做了,而RVM没有。一般来说,正如上面的好心人所解释的那样,RVM有一组不同于捆绑器的目标。rvm是关于管理ruby运行时的,而bundle是关于管理应用程序的依赖gem的。

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

RVM是一个运行多个红宝石的工具,理论上也可以运行多个宝石。它根本不会为你处理依赖关系——你仍然需要自己来安装gems。

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

相关内容

  • 没有找到相关文章

最新更新