什么需要' bundler / setup'和' Bundler.require'做?

时间:2014-01-05 20:20:57

标签: ruby-on-rails ruby bundler

在Rails应用程序的boot.rb中,有一行:

require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])

application.rb中,还有另一行:

Bundler.require(:default, Rails.env)

您能否简要解释一下Rails / Bundler在require 'bundler/setup''Bundler.require'处的行为?

是否有效声明,bundler/setup需要Bundler,而Gemfile需要来自Bundler.require的所有宝石?

1 个答案:

答案 0 :(得分:6)

require 'bundler/setup'做的是让Rails自动发现Gemfile,然后将其中定义的所有gem添加到Ruby的加载路径中。

然后

Bundler.require(:default, Rails.env)将需要Gemfile中的所有gem,具体取决于当前的Rails环境。因此,如果当前环境是开发环境,Rails将加载所有要在开发环境中使用的gem。

希望有所帮助!