当我使用Bundler时,为什么我应该关心RVM的Gemsetfunction?

我只是不明白。 我想, Bundler是为了解决gem之间的版本冲突而开发的。 所以我只require "bundler/setup" ,一切都很好,知道Bundler将加载我所有的gem和他们的依赖的正确版本。 现在, RVM对于pipe理多个Rubies非常棒,我知道,但为什么我应该关心Gemsetfunction呢? 我在这里想念什么? 它可以使我的发展更容易? 也许,你们中的一些人可以给我一些关于RVM + Bundler完美工作stream程的提示,以供开发和生产之用。

我也不知道RVM什么时候开始切换到另一个Ruby。 我知道我可以在我的项目中有.rvmrc文件,但是我必须cd到这个目录,以便交换机发生?

此外,我通常使用Passenger进行开发,由于Passenger.prefpane ,在Mac OS中集成非常好。 我还可以用RVM来做到这一点,还是有更好的方法来做到这一点? 乘客是否会识别.rvmrc文件并切换到正确的.rvmrc

当我使用Bundler时,为什么我应该关心RVM的Gemsetfunction?

你不应该。

那么,如果你愿意 ,当然可以关心,所以我应该更好地说“你不需要”。

我刚刚听到一个Bundler核心团队成员的播客采访,他们基本上说,自从他开始使用Bundler后,他停止使用Gemset,因为它们是多余的。

这里有一个博客文章,讨论同样的问题,并举一些例子。

当我正在处理遗留代码或分叉其他非rails的ruby项目,这些ruby项目并不是出于捆绑路线的原因,gemsets是一件非常棒的事情。 我也发现gemsets宝贵的宝贵。 很高兴有多个testing环境来切换和testing新build的gem。

就我所知,乘客不读取.rvmrc 。 就我所知,你不能在不同的ruby下乘坐不同的项目。 我的默认导轨设置只是bundlerrake全球gemset。 我让bundler从那里接pipe,像你所描述的那样pipe理其他gem项目。 工作得很好。

如果您预计需要更改捆绑软件版本,您一定要使用gem套装。 而且您可以使用gemset来pipe理对Rails应用程序(wirble等)无关紧要的gem。