2017-02-17 19 views
3

Когда я используюразница между 'требуют Bundler' и 'требуют пакетирования/настройка'

require 'bundler/setup' 

я получаю Bundler.with_clean_env не поддерживается.

Но когда я изменить это

require 'bundler' 

Он поддерживает Bundler.with_clean_env. Здесь возникает путаница, в чем заключается разница между требованиями 'bundler' и 'bundler/setup'?

ответ

1

Когда речь идет о драгоценных камней, require 'foo' потребует foo.rbfile, который находится в директории lib драгоценного камня. Этот файл обычно имеет то же имя, что и драгоценный камень, и отвечает за то, что он требует, чтобы все другие необходимые файлы для функционирования драгоценного камня.

Когда вы делаете require 'foo/bar', вы ищете lib/foo/bar.rb. Другими словами, вам требуется только конкретный file от этого драгоценного камня, а не всего.


bundler/setup отвечает за загрузку всех драгоценных камней, описанных в вашем Gemfile. Bundler.with_clean_env - совершенно другая функциональность, defined в главном файле gem.

1

Gemfiles может включать groups как :test или :development.

  • require 'bundler/setup' включает в себя все группы из вашего Gemfile.

  • require 'bundler' С другой стороны, вы можете указать (через Bundler.setup), какие группы включать.

От documentation:

Настройка путь нагрузки, так что все зависимости в вашем Gemfile может потребоваться

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

добавить только драгоценные камни из указанных групп на пути нагрузки. Если вы хотите получить драгоценные камни в группе по умолчанию, обязательно включите ее.

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