5

我使用RVM来管理我的本地 Ruby 安装,并使用Bundler来管理应用程序依赖项。

有些人建议为每个应用程序使用单独的 RVM gemset,而有些人似乎认为没有必要。

那么,当我使用 Bundler 时,为每个应用程序使用单独的 RVM gemset 有什么好处呢?不这样做有什么风险?

4

4 回答 4

2

除了 bundler 之外,我还使用 gemsets,原因如下:

  • 很容易只是偶尔放下所有东西(我喜欢弄乱我安装的宝石)
  • 无需调用bundle exec(这对于 binstubs 已过时)
  • 加载速度更快,因为需要解析的 gem-specs 更少
  • 易于分发(将其复制给您的伙伴)

可能有更多使用它们的理由,但我通常喜欢沙盒的想法!

于 2012-06-18T18:35:16.063 回答
2

我发现如果您使用的是 rails 2,则拥有 rvm 很有用。如果您需要处理具有旧代码的应用程序,则 RVM 非常有用。Rails 2 不使用 Gemfile,因此bundle exec不起作用。RVM 可以轻松地为该项目保持 gem 版本的正确性,并且您可以切换回新版本的 rails 并使用 Gemfile 指定版本。如果您有多个应用程序使用不同的 gem 版本,但使用相同的 ruby​​ 版本,则可以方便地共享大多数 gem,并在 Gemfile 中指定它们不同的地方。

我认为这取决于情况。如果您发现两个应用程序之间存在大量版本问题,并且不断修改 Gemfile 以保持它们的正确性很烦人,那么请使用单独的 gemset。如果有足够的共同点,那么使用相同的 gemset 可能是有意义的

于 2012-06-19T15:58:33.953 回答
1

RVM gemsets 允许您在不加载捆绑程序的情况下分离 gems - 这更快,加载 gems 会更简单。

您应该使用 gemsets 将项目与您的辅助 gem (如gist)分开。

但是,如果您认为 gemset 对您没有帮助,您可以告诉 RVM 完全忽略 gemset:

echo "export rvm_ignore_gemsets_flag=1" >> ~/.rvmrc
于 2012-06-18T16:20:36.790 回答
1

我是否还可以参考位于 fast/globalcache_comment_test.sh 的 rvm-test 形式的“globalcache”文档以及项目的 Gemfile。

这也将减少到 ruby​​gems.org 的网络流量。全局初始加载,无法承受。

于 2012-06-19T17:11:38.777 回答