【问题标题】:Why should I use application-specific RVM gemsets in addition to Bundler?除了 Bundler 之外,我为什么还要使用特定于应用程序的 RVM gemset?
【发布时间】:2012-06-18 16:03:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby rubygems rvm bundler


    【解决方案1】:

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

    • 很容易偶尔放下所有东西(我喜欢摆弄我安装的 gem)
    • 无需致电bundle exec(此功能已被 binstubs 淘汰)
    • 加载速度更快,因为需要解析的 gem-specs 更少
    • 易于分发(复制给您的伙伴)

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

    【讨论】:

    • 实际上你不必在 gemsets 中使用 binstubs,基本上 binstubs 和 bundle exec 一样慢,与我的 gem rubygems-bundler 相比,它们需要你付出更多的努力,它只能使用正常流程工作.
    • 不错,不知道!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      您应该使用 gemsets 将项目与您的 helper gems 分开(例如 gist)。

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

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

      【讨论】:

        【解决方案4】:

        我还可以向您推荐位于 fast/globalcache_comment_test.sh 的 rvm-test 形式的“globalcache”文档以及您的项目的 Gemfile。

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

        【讨论】:

          猜你喜欢
          • 2011-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-12
          • 1970-01-01
          相关资源
          最近更新 更多