Docs header transparent bg

什么是 Bundler?

Bundler 通过跟踪和安装 Ruby 项目所需的精确 gem 和版本,为 Ruby 项目提供一致的环境。

Bundler 是摆脱依赖地狱的良方,它确保您需要的 gem 在开发、暂存和生产环境中都存在。开始一个项目就像运行 bundle install 一样简单。

Bundler 的新特性 Bundler 存在的意义

入门

本指南假设您已安装 Ruby。如果您尚未安装 Ruby,请先安装,然后再回来查看!任何现代 Ruby 发行版默认情况下都预装了 Bundler。

开始使用 Bundler 很简单!在项目根目录中指定 Gemfile 中的依赖项

source 'https://rubygems.org.cn'
gem 'nokogiri'
gem 'rack', '~> 2.2.4'
gem 'rspec'

了解更多:Gemfiles

从指定来源安装所有必需的 gem

$ bundle install
$ git add Gemfile Gemfile.lock

了解更多:bundle install

第二个命令将 Gemfile 和 Gemfile.lock 添加到您的仓库。这确保了您的应用程序中的其他开发人员以及您的部署环境都将使用与您现在使用的相同的第三方代码。

在您的应用程序中,加载捆绑的环境

require 'bundler/setup'

# require your gems as usual
require 'nokogiri'

了解更多:Bundler.setup

运行捆绑包中 gem 附带的可执行文件

$ bundle exec rspec spec/models

在某些情况下,如果可执行文件恰好安装在您的系统中并且不会引入与您的捆绑包冲突的任何 gem,则运行可执行文件而无需 bundle exec 可能有效。

但是,这不可靠,并且是造成相当大痛苦的根源。即使它看起来有效,它将来或在另一台机器上可能无法正常工作。

最后,如果您想要一种获取捆绑包中 gem 的快捷方式

$ bundle install --binstubs
$ bin/rspec spec/models

安装到 bin 中的可执行文件是针对捆绑包的,并且始终有效。

了解更多:可执行文件

使用 Bundler 创建 rubygem

Bundler 也是创建新 gem 的一种简单方法。就像您可能使用 rails new 创建标准的 Rails 项目一样,您可以使用 bundle gem 创建标准的 gem 项目。

创建一个新的 gem,其中包含 README、.gemspec、Rakefile、目录结构以及描述、测试和发布 gem 所需的所有基本样板

$ bundle gem my_gem
Creating gem 'my_gem'...
      create  my_gem/Gemfile
      create  my_gem/.gitignore
      create  my_gem/lib/my_gem.rb
      create  my_gem/lib/my_gem/version.rb
      create  my_gem/my_gem.gemspec
      create  my_gem/Rakefile
      create  my_gem/README.md
      create  my_gem/bin/console
      create  my_gem/bin/setup
      create  my_gem/CODE_OF_CONDUCT.md
      create  my_gem/LICENSE.txt
      create  my_gem/.travis.yml
      create  my_gem/test/test_helper.rb
      create  my_gem/test/my_gem_test.rb
Initializing git repo in ./my_gem

了解更多:bundle gem

将 Bundler 与以下工具一起使用

Rails Sinatra RubyGems RubyMotion

参与进来

Bundler 有许多贡献者和用户,他们之间经常交流。如果您有任何问题,请尝试访问 IRC 频道邮件列表。如果您有兴趣为该项目做出贡献(无需编程技能),请阅读 贡献指南开发指南。在参与 Bundler 项目时,请牢记 行为准则,并对所有人保持包容和友好。如果您有赞助或安全问题,请直接联系核心团队。

行为准则 #bundler 在 IRC 上 邮件列表 贡献 联系核心团队

在 GitHub 上编辑此文档,如果您发现错误或注意到缺少内容。