除了Bundler之外,为什么还应该使用特定于应用程序的RVM gemsets?

时间:2012-06-18 16:03:04

标签: ruby rubygems rvm bundler

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

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

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

4 个答案:

答案 0 :(得分:2)

我使用除了捆绑器之外的gemsets,原因如下:

  • 很容易就一次丢掉所有东西(我喜欢弄乱我已安装的宝石)
  • 无需调用bundle exec(这已经过时使用binstubs)
  • 加载速度更快,因为需要解析更少的宝石规范
  • 易于分发(将其复制给您的伴侣)

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

答案 1 :(得分:2)

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

我认为这种情况有所依赖。如果您发现两个应用程序之间存在大量版本问题,并且不断修改Gemfiles以使它们保持平直令人讨厌,那么请使用单独的gemsets。如果有足够的共同点,那么使用相同的gemset可能是有意义的

答案 2 :(得分:1)

RVM gemsets允许您在不加载捆绑器的情况下分离宝石 - 这样更快,加载宝石会更简单。

您应该使用gemsets将项目与助手宝石分开(例如gist)。

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

echo "export rvm_ignore_gemsets_flag=1" >> ~/.rvmrc

答案 3 :(得分:1)

我可能会以快速/ globalcache_comment_test.sh中的rvm-test的形式将您引用到'globalcache'文档以及项目的Gemfile。

这也将减少对rubygems.org的网络流量。全局的初始装载,不能承受。