【问题标题】:Why does RVM install duplicate gems for different gemsets?为什么 RVM 会为不同的 gemset 安装重复的 gem?
【发布时间】:2012-06-04 19:53:30
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ruby rvm bundler


    【解决方案1】:

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

    rvm use 1.9.3
    

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

    rvm use 1.9.3@global
    

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

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

    就替代方案而言,rbenv 是我要检查的主要选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多