Bundler 通过跟踪和安装 Ruby 项目所需的精确 gem 和版本,为 Ruby 项目提供一致的环境。
Bundler 是摆脱依赖地狱的良方,它确保您需要的 gem 在开发、暂存和生产环境中都存在。开始一个项目就像运行 bundle install
一样简单。
本指南假设您已安装 Ruby。如果您尚未安装 Ruby,请先安装,然后再回来查看!任何现代 Ruby 发行版默认情况下都预装了 Bundler。
开始使用 Bundler 很简单!在项目根目录中指定 Gemfile 中的依赖项
source 'https://rubygems.org.cn'
gem 'nokogiri'
gem 'rack', '~> 2.2.4'
gem 'rspec'
从指定来源安装所有必需的 gem
$ bundle install
$ git add Gemfile Gemfile.lock
第二个命令将 Gemfile 和 Gemfile.lock 添加到您的仓库。这确保了您的应用程序中的其他开发人员以及您的部署环境都将使用与您现在使用的相同的第三方代码。
在您的应用程序中,加载捆绑的环境
require 'bundler/setup'
# require your gems as usual
require 'nokogiri'
运行捆绑包中 gem 附带的可执行文件
$ bundle exec rspec spec/models
在某些情况下,如果可执行文件恰好安装在您的系统中并且不会引入与您的捆绑包冲突的任何 gem,则运行可执行文件而无需 bundle exec
可能有效。
但是,这不可靠,并且是造成相当大痛苦的根源。即使它看起来有效,它将来或在另一台机器上可能无法正常工作。
最后,如果您想要一种获取捆绑包中 gem 的快捷方式
$ bundle install --binstubs
$ bin/rspec spec/models
安装到 bin
中的可执行文件是针对捆绑包的,并且始终有效。
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
Rails Sinatra RubyGems RubyMotion
Bundler 有许多贡献者和用户,他们之间经常交流。如果您有任何问题,请尝试访问 IRC 频道 或 邮件列表。如果您有兴趣为该项目做出贡献(无需编程技能),请阅读 贡献指南 或 开发指南。在参与 Bundler 项目时,请牢记 行为准则,并对所有人保持包容和友好。如果您有赞助或安全问题,请直接联系核心团队。