2017-02-28 75 views

回答

0

答案在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所做的一样。