‘require bundler’和’require bundler / setup’之间的区别
我用的时候
require 'bundler/setup'
我得到Bundler.with_clean_env
不受支持。
但是,当我改变它
require 'bundler'
它支持Bundler.with_clean_env
。 这里出现的混乱是需要'bundler'
和'bundler/setup'
之间的区别是什么?
在引用gems时, foo.rb
require 'foo'
将需要位于gem的lib
目录中的foo.rb
文件 。 该文件通常与gem名称相同,并且负责要求gem的所有其他必要文件才能运行。
当你require 'foo/bar'
,你会搜索lib/foo/bar.rb
换句话说,您只需要来自该gem的特定文件而不是整个文件 。
bundler/setup
负责加载Gemfile中描述的所有gem。 Bundler.with_clean_env
是一个完全不同的function,在gem的主文件中定义 。
Gemfiles可以包括以下组 :test
或:development
。
-
require 'bundler/setup'
包含Gemfile中的所有组。 -
另一方面,
Bundler.setup
require 'bundler'
允许您指定(通过Bundler.setup
)要包含的组。
从文档 :
配置加载路径,以便可能需要Gemfile中的所有依赖项
require 'rubygems' require 'bundler/setup' require 'nokogiri'
仅将指定组中的gem添加到加载路径。 如果您想要默认组中的gem,请确保包含它
require 'rubygems' require 'bundler' Bundler.setup(:default, :ci) require 'nokogiri'