Bundler 透過追蹤和安裝確切需要的 gem 和版本,為 Ruby 專案提供一致的環境。
Bundler 是擺脫相依地獄的方法,並確保您需要的 gem 出現在開發、分段和生產環境中。開始一個專案就像執行 bundle install
一樣簡單。
本指南假設您已安裝 Ruby。如果您尚未安裝 Ruby,請先安裝,然後再回來!任何現代的 Ruby 發行版預設都會預先安裝 Bundler。
開始使用 Bundler 很容易!在專案的根目錄中,在 Gemfile 中指定您的相依項
source 'https://rubygems.org'
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 專案時,請務必謹記 行為準則,並對每個人保持包容和友善的態度。如果您有任何贊助或安全性問題,請直接聯繫核心團隊。