我只是不明白。我想, Bundler 是为了解决宝石之间的版本冲突而开发的。所以我只需要require "bundler/setup"
并且一切都很好,因为知道 Bundler 将加载我所有宝石及其依赖项的正确版本。现在, RVM 非常适合管理多个Rubies,我知道,但为什么我应该关心Gemset功能呢?我在这里想念一下吗?它能使我的开发更容易吗?也许,你们中的一些人可以给我一些关于开发和生产的完美 RVM + Bundler 工作流程的一些提示。
我也不知道 RVM 何时开始切换到另一个Ruby。我知道我的项目中可以有一个.rvmrc
文件,但是我必须cd
到这个目录才能切换吗?
此外,我通常使用 Passenger 进行开发,因为Passenger.prefpane
, Mac OS 中的集成非常棒。我还能用RVM做到这一点还是有更好的方法呢? Passenger 是否识别.rvmrc
个文件并切换到正确的Gemset?
答案 0 :(得分:24)
当我使用Bundler时,为什么要关心RVM的Gemset功能?
你不应该。
好吧,如果你想要,你可以关心,所以我最好说“你不需要。”
我只是听了一个podcast interview with one of the Bundler core team members,他基本上说,自从他开始使用Bundler后,他就停止使用Gemsets,因为它们是多余的。
Here's a blog post that discusses the same issue, with some examples.
答案 1 :(得分:6)
当我处理遗留代码或分支其他非铁轨ruby项目时,由于捆绑路线没有出现任何原因,宝石集是如此令人敬畏的事情。我也发现宝石在开发宝石时非常宝贵。很高兴有多个测试环境可以切换并测试新建的gem。
据我所知,乘客不会阅读.rvmrc
。据我所知,你不能在不同的红宝石下在乘客中运行不同的项目。我的默认rails设置在全局gemset中只有bundler
和rake
。我让Bundler从那里接管并像你描述的那样明智地管理其他宝石项目。效果很好。
答案 2 :(得分:1)
如果您预计必须更改捆绑器版本,则绝对应该使用gemsets。您可以使用gemsets来管理与Rails应用程序无关的宝石(wirble等)。