2
是這樣的:是否需要'綁定程序/安裝程序'與運行Bundler.setup相同?
require 'bundler'
Bundler.setup
實現一樣:
require 'bundler/setup'
據我瞭解,bundler/setup
要求所有組自動,而這不符合require 'bundler
的情況」。所以考慮到這個事實,這是否意味着上述2段代碼完成了相同的事情?
是這樣的:是否需要'綁定程序/安裝程序'與運行Bundler.setup相同?
require 'bundler'
Bundler.setup
實現一樣:
require 'bundler/setup'
據我瞭解,bundler/setup
要求所有組自動,而這不符合require 'bundler
的情況」。所以考慮到這個事實,這是否意味着上述2段代碼完成了相同的事情?
答案在bundler/setup
源代碼中發現:
require 'bundler/shared_helpers'
if Bundler::SharedHelpers.in_bundle?
require 'bundler'
if STDOUT.tty?
begin
Bundler.setup
rescue Bundler::BundlerError => e
...
end
else
Bundler.setup
end
...
end
in_bundle?
看來,如果被內部本身運行捆紮機被檢查的方法(用於測試目的,據我可以讓出)並驗證Gemfile
是否存在。
所以是的,對於一般用途,您的兩段代碼都是相同的。
的bundler/setup
版本的優點,就是可以從這樣的命令行運行Ruby:
ruby -rbundler/setup ... some_ruby_script.rb
,它會自動使你的腳本捆紮機下運行,即使腳本本身可能不是捆紮機意識到,這幾乎與bundle exec
所做的一樣。