Docs header transparent bg

如何在 Ruby 中使用 Bundler

配置加载路径,以便可以加载 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

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 可以让您跳过重复大量加载语句。

在 GitHub 上编辑此文档,如果您发现错误或遗漏。