【问题标题】:Difference between 'require bundler' and 'require bundler/setup'“需要捆绑器”和“需要捆绑器/设置”之间的区别
【发布时间】:2017-02-17 09:42:33
【问题描述】:

当我使用时

require 'bundler/setup' 

我得到Bundler.with_clean_env 不受支持。

但是当我把它改成

require 'bundler' 

它支持Bundler.with_clean_env。这里出现的困惑是要求'bundler''bundler/setup' 之间有什么区别?

【问题讨论】:

    标签: ruby bundler


    【解决方案1】:

    当引用 gem 时,require 'foo' 需要位于 gem 的 lib 目录中的 foo.rb file。该文件通常与 gem 具有相同的名称,并负责需要所有其他必要的文件才能使 gem 运行。

    当您执行require 'foo/bar' 时,您会搜索lib/foo/bar.rb。换句话说,您只需要来自该 gem 的特定 file,而不是全部。


    bundler/setup 负责加载您的 Gemfile 中描述的所有 gem。 Bundler.with_clean_env 是一个完全不同的功能,defined 在 gem 的主文件中。

    【讨论】:

      【解决方案2】:

      Gemfile 可以包含 groups,例如 :test:development

      • require 'bundler/setup' 包括 Gemfile 中的所有组。

      • 另一方面,require 'bundler' 允许您指定(通过Bundler.setup)要包括哪些组。

      来自documentation

      配置加载路径,以便需要 Gemfile 中的所有依赖项

      require 'rubygems'
      require 'bundler/setup'
      require 'nokogiri'
      

      仅将指定组中的 gem 添加到加载路径。如果您想要默认组中的 gem,请确保包含它

      require 'rubygems'
      require 'bundler'
      Bundler.setup(:default, :ci)
      require 'nokogiri'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-19
        • 2014-06-25
        • 1970-01-01
        • 2012-08-19
        • 2013-06-16
        • 1970-01-01
        • 2016-03-26
        相关资源
        最近更新 更多