Docs header transparent bg

Bundler 是什麼?

Bundler 透過追蹤和安裝確切需要的 gem 和版本,為 Ruby 專案提供一致的環境。

Bundler 是擺脫相依地獄的方法,並確保您需要的 gem 出現在開發、分段和生產環境中。開始一個專案就像執行 bundle install 一樣簡單。

Bundler 的新功能 Bundler 存在的理由

入門

本指南假設您已安裝 Ruby。如果您尚未安裝 Ruby,請先安裝,然後再回來!任何現代的 Ruby 發行版預設都會預先安裝 Bundler。

開始使用 Bundler 很容易!在專案的根目錄中,在 Gemfile 中指定您的相依項

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

了解更多:Gemfile

從您指定的來源安裝所有必要的 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 專案時,請務必謹記 行為準則,並對每個人保持包容和友善的態度。如果您有任何贊助或安全性問題,請直接聯繫核心團隊。

行為準則 IRC 上的 #bundler 郵件列表 貢獻 電子郵件核心團隊

在 GitHub 上編輯此文件,如果您發現錯誤或遺漏事項。