2012-06-04 34 views
7

因此,我为每个rails项目创建了一个单独的rvm gemset。他们都使用相同版本的红宝石1.9.3为什么RVM会为不同的gemset安装重复的gem?

这会导致bundle install为两个项目完全安装一组全新的宝石。如果其他项目具有与其他gemset中安装的gem完全相同的版本,则无关紧要。我猜这对我来说是预期的行为,但它似乎是硬盘空间和带宽的低效使用。

我知道我可以手动将其中的一些宝石,以一个全球性的宝石,但似乎有些单调乏味,我和亦不易断裂,如果我的依赖某个特定项目而改变。

有没有更好的方式来整理东西,或者当宝石版本已安装RVM自动检测,只需使用该副本?

还是有更好的替代RVM,我应该使用。

回答

5

这是设计。 Gemsets允许您完全隔离所使用的库,因此您不会在项目之间发生意外的交互。如果你不需要隔离,你可以只使用一个解释无宝石:

rvm use 1.9.3 

如果有你在所有项目中使用的一些宝石,只需切换到全球宝石的解释:

rvm use [email protected] 

gem install常见的宝石,然后他们不会重新安装每个项目了,当你在一个宝石。

虽然gemsets在带宽或HD空间方面肯定效率不高,但它们非常方便,因为您可以轻松地消除项目的所有依赖关系,并随时从头开始重新编程。他们还彻底消除了意外更改版本的依赖关系。如果你不喜欢宝石套装,在你的Gemfile中正确指定版本可以让你在没有宝石套装的情况下获得相当好的效果。

至于替代品,rbenv是我要检查的主要一个。

相关问题