我使用RVM来管理我的本地 Ruby 安装,并使用Bundler来管理应用程序依赖项。
有些人建议为每个应用程序使用单独的 RVM gemset,而有些人似乎认为没有必要。
那么,当我使用 Bundler 时,为每个应用程序使用单独的 RVM gemset 有什么好处呢?不这样做有什么风险?
除了 bundler 之外,我还使用 gemsets,原因如下:
bundle exec
(这对于 binstubs 已过时)可能有更多使用它们的理由,但我通常喜欢沙盒的想法!
我发现如果您使用的是 rails 2,则拥有 rvm 很有用。如果您需要处理具有旧代码的应用程序,则 RVM 非常有用。Rails 2 不使用 Gemfile,因此bundle exec
不起作用。RVM 可以轻松地为该项目保持 gem 版本的正确性,并且您可以切换回新版本的 rails 并使用 Gemfile 指定版本。如果您有多个应用程序使用不同的 gem 版本,但使用相同的 ruby 版本,则可以方便地共享大多数 gem,并在 Gemfile 中指定它们不同的地方。
我认为这取决于情况。如果您发现两个应用程序之间存在大量版本问题,并且不断修改 Gemfile 以保持它们的正确性很烦人,那么请使用单独的 gemset。如果有足够的共同点,那么使用相同的 gemset 可能是有意义的
RVM gemsets 允许您在不加载捆绑程序的情况下分离 gems - 这更快,加载 gems 会更简单。
您应该使用 gemsets 将项目与您的辅助 gem (如gist
)分开。
但是,如果您认为 gemset 对您没有帮助,您可以告诉 RVM 完全忽略 gemset:
echo "export rvm_ignore_gemsets_flag=1" >> ~/.rvmrc
我是否还可以参考位于 fast/globalcache_comment_test.sh 的 rvm-test 形式的“globalcache”文档以及项目的 Gemfile。
这也将减少到 rubygems.org 的网络流量。全局初始加载,无法承受。