2011-01-14 85 views
39

我只是不明白。我认为,Bundler是为解决gem之间的版本冲突而开发的。所以我只需要require "bundler/setup",一切都很好,知道Bundler将加载我所有的宝石及其依赖项的正确版本。现在,RVM非常适合管理多个Rubies,但我知道,为什么我应该关心Gemset功能?我在这里想念什么?它可以让我的发展更容易吗?也许,你们中的一些人可以给我提供关于开发和生产工作流程的完美工作流程的一些提示。当我使用Bundler时,为什么我应该关心RVM的Gemset功能?

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

此外,我通常使用客运发展以来,由于Passenger.prefpane,整合的Mac OS是巨大的。我仍然可以使用RVM来做到这一点,还是有更好的方法来做到这一点? 乘客承认.rvmrc文件并切换到正确的Gemset?

+2

是的,rvm将cd重新定义为shell函数,它在更改目录时检查.rvmrc文件。 – Sam 2011-01-28 11:21:08

回答

6

当我正在处理遗留代码或分叉其他非rails rails项目时,由于任何原因导致bundle路径失败,gemsets是非常棒的东西。在开发宝石的同时,我也发现宝石非常宝贵。很高兴有多个测试环境来切换和测试新建的宝石。

就我所知,乘客并不读取.rvmrc。尽我所知,您不能在不同的红宝石中使用不同的项目。我的默认导轨设置在全局gemset中只有bundlerrake。我让bundler从那里接管,并像您所描述的那样管理其他宝石项目。工作得很好。

+0

这是否意味着您的每个项目都有一个独立的gemset?我的意思是你正在谈论你的“默认导轨设置”。在某种程度上,这种设置可能会演变成特定项目的状态。那么你有一个自定义宝石?你如何在你的开发机器上运行你的应用程序? – t6d 2011-01-14 09:52:48

+0

是的,我的所有非rails项目和一个gemset for rails(仅包含bundler)都有独立的gemset。所有的rails项目的gem需求,我让bundler处理 - 例如`bundle exec rails server`或`bundle exec rake`。所以,我的Gemfiles随着轨道项目的发展而演变,但是`rails` gemset不会。 – anshul 2011-01-17 11:43:14

1

如果预计不必改变你的捆绑版本,您一定要使用gemsets。你可以使用gemset来管理对你的Rails应用程序无关紧要的宝石(wirble等)。

相关问题