7

因此,我为我的每个 rails 项目创建了一个单独的 rvm gemset。他们都使用相同版本的 ruby1.9.3​​ 。

这会导致bundle install为两个项目完全安装一组新的 gem。另一个项目是否在另一个 gemset 中安装了完全相同版本的 gem 并不重要。我猜这对我来说是预期的行为,但这似乎是对硬盘空间和带宽的低效使用。

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

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

或者我应该使用 RVM 的更好替代方案吗?

4

1 回答 1

5

这是设计使然。Gemsets 允许您完全隔离所使用的库,这样您就不会在项目之间发生任何意外交互。如果您不需要隔离,则可以只使用没有 gemset 的解释器:

rvm use 1.9.3

如果您在所有项目中都使用了一些 gem,只需切换到解释器的全局 gemset:

rvm use 1.9.3@global

gem install常见的 gem,然后当您在 gemset 中时,它们将不再为每个项目重新安装。

虽然 gemset 在带宽或 HD 空间方面绝对不是有效的,但它们非常方便,因为您可以轻松地清除项目的所有依赖项,并bundle随时从头开始。它们还完全消除了意外更改依赖项的版本。如果您不喜欢 gemsets,Gemfile那么在没有它们的情况下正确指定版本可以让您在这方面走得很远。

至于替代方案,rbenv是我要检查的主要选项。

于 2012-06-04T22:28:50.957 回答