'需要捆绑商之间的区别'和'需要捆绑/设置'

时间:2017-02-17 09:42:33

标签: ruby bundler

当我使用

require 'bundler/setup' 

我不支持Bundler.with_clean_env

但是当我把它更改为

require 'bundler' 

它支持Bundler.with_clean_env。这里出现的混乱是需要'bundler''bundler/setup'之间的区别吗?

2 个答案:

答案 0 :(得分:1)

在提及宝石时,require 'foo'需要位于宝石foo.rb目录中的lib file。该文件通常与gem名称相同,并且负责要求gem运行所有其他必要文件。

执行require 'foo/bar'后,您将搜索lib/foo/bar.rb。换句话说,您只需要来自该宝石的特定file而不是整个宝石。

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

答案 1 :(得分:1)

Gemfiles可以包含:test:developmentgroups

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

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

来自documentation

  

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

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

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

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