配置加载路径,以便可以加载 Gemfile 中的所有依赖项。
require 'bundler/setup'
require 'nokogiri'
仅将指定组中的 gem 添加到加载路径。如果您想要默认组中的 gem,请确保将其包含在内。
require 'bundler'
Bundler.setup(:default, :ci)
require 'nokogiri'
Ruby 2.0 和 RubyGems 2.0 都需要 Bundler 1.3 或更高版本。如果您对 Bundler 与系统之间的兼容性有任何疑问,请查看兼容性列表。
Bundler 确保 Ruby 可以找到 Gemfile
中的所有 gem(以及它们的所有依赖项)。如果您的应用程序是 Rails 应用程序,则您的默认应用程序已经包含调用 bundler 所需的代码。对于其他类型的应用程序(例如 Sinatra 应用程序),您需要在尝试加载任何 gem 之前设置 bundler。在应用程序加载的第一个文件(对于 Sinatra,调用 require 'sinatra'
的文件)的顶部,添加以下代码
require 'bundler/setup'
这将自动发现您的 Gemfile
,并将 Gemfile
中的所有 gem 提供给 Ruby(从技术角度来说,它将 gem 放入“加载路径”)。
现在您的代码已可供 Ruby 使用,您可以加载所需的 gem。例如,您可以 require 'sinatra'
。如果您有很多依赖项,您可能想说“加载 Gemfile
中的所有 gem”。为此,请在 require 'bundler/setup'
后面立即添加以下代码
Bundler.require(:default)
对于我们的示例 Gemfile,此行与以下行完全等效
require 'rails'
require 'rack-cache'
require 'nokogiri'
敏锐的读者会注意到,加载 rack-cache
gem 的正确方法是 require 'rack/cache'
,而不是 require 'rack-cache'
。要告诉 bundler 使用 require 'rack/cache'
,请更新您的 Gemfile
source 'https://rubygems.org.cn'
gem 'rails', '5.0.0'
gem 'rack-cache', require: 'rack/cache'
gem 'nokogiri', '~> 1.4.2'
对于如此小的 Gemfile
,我们建议您跳过 Bundler.require
,并手动加载 gem(尤其是在需要在 Gemfile
中添加 :require
指令的情况下)。对于更大的 Gemfile
,使用 Bundler.require
可以让您跳过重复大量加载语句。