因此,我为我的每个rails项目创建了一个单独的rvm gemset。它们都使用相同版本的ruby 1.9.3

这使bundle install完全为这两个项目安装了一组全新的gem。另一个项目是否具有与另一个gemset中完全相同版本的gem无关紧要。我猜这是我的预期行为,但似乎对硬盘空间和带宽的利用效率低下。

我知道我可以手动将其中一些gem移到全局gemset,但这对我来说很乏味,而且如果我的依赖项针对特定项目发生更改,也容易出错。

有没有更好的方法来组织事物,或者让rvm自动检测何时已安装gem版本并仅使用该副本?

还是我应该使用RVM更好的替代方法。

最佳答案

这是设计使然。 gem 集可让您完全隔离所使用的库,因此项目之间不会有任何意外交互。如果您不需要隔离,则可以使用不带gemset的解释器:

rvm use 1.9.3

如果在所有项目中都使用了一些gem,则只需为解释器切换到全局gemset:
rvm use 1.9.3@global
gem install普通的gems,当您位于gemset中时,将不再按项目重新安装它们。

尽管就带宽或高清空间而言, gem 集绝对不是高效的,但它们非常方便,因为您可以随时轻松摆脱项目的所有依赖关系,并随时从头开始重新编码。它们还完全消除了意外更改依赖项版本的情况。如果您不喜欢gemset,那么在bundle中正确指定版本可以使您在没有它们的情况下走得更远。

至于替代方法,rbenv是我要检查的主要方法。

关于ruby - 为什么RVM为不同的 gem 集安装重复的 gem ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10887425/

10-11 07:57