Docs header transparent bg

Bundler 開發設定

要使用 Bundler,您可能需要執行以下幾件事

  • 分岔 Rubygems 存放庫,並將分岔複製到您的電腦。(遵循此教學,了解如何分岔存放庫的說明。)

  • 使用您的套件管理員安裝 graphviz 套件

      sudo apt-get install graphviz -y
    

    對於 OS X(已安裝 brew)

      brew install graphviz
    
  • 從 rubygems 根目錄安裝開發相依項和 Bundler 的測試相依項

      bin/rake setup spec:parallel_deps
    
  • 變更至 bundler 目錄

      cd bundler
    
  • 現在您可以並行執行測試套件

      bin/parallel_rspec
    
  • 設定一個 shell 別名,以從您的複製執行 Bundler,例如 Bash 別名(遵循這些說明,將別名新增到您的 ~/.bashrc 設定檔)

      alias dbundle='ruby /path/to/bundler/repo/spec/support/bundle.rb'
    

共同開發 Bundler 和 RubyGems

在開發 Bundler 功能或需要變更 RubyGems 的錯誤修正時,您可以透過設定 RGV 環境變數來指向存放庫的根目錄,以確保 Bundler 的測試套件會選取這些變更,如下所示

RGV=.. bin/parallel_rspec

建議您確保您的變更始終適用於最新的 RubyGems,因此永久設定此變數可能是一個好主意。您可以使用 direnv 執行此操作。

RGV 環境變數也可以設定為任意 RubyGems 版本,以確保您在 Bundler 中的變更可以順利與這些版本搭配使用。例如,

RGV=v3.2.33 bin/parallel_rspec

使用 pry 進行除錯

使用 Pry 深入了解程式碼:RUBYOPT=-rpry dbundle 以載入 pry,然後執行指令。

背景脈絡:您可以在 Ruby 中操作環境變數,以控制 Ruby 解譯器的行為。Ruby 使用 RUBYOPT 環境變數來指定啟動 Ruby 的選項。

RUBYOPT 的參數會套用,就像您在 ruby 之後將它們輸入為旗標一樣。-r 旗標表示「載入」。因此,-rpry 表示 require 'pry'。舉例來說,ruby -rpry /path/to/bundleRUBYOPT=-rpry ruby /path/to/bundle 相同。

因此,RUBYOPT=-rpry dbundle 表示「載入 pry 並載入此路徑到 Bundler」,這表示您將使用 pry 和您的本機 bundler 來啟動您的開發環境。

為什麼需要這樣做? 為什麼 require 'pry'; binding.pry 不夠?

結合 RUBYOPTdbundle 的原因在於 Bundler 會接管可用的 gem。如果你在電腦上安裝了 pry,但 Gemfile 中沒有包含,Bundler 本身會從你可以需要的 gem 清單中移除 pry。設定 RUBYOPT=-rpry 是在 Bundler 接管並從可需要的 gem 清單中移除 pry 之前,需要 pry 的一種方式。這樣一來,之後你就可以利用 binding.pry 並讓它運作。很不幸的是,如果你等到 binding.pry 的時候才 require 'pry',只要 pry 不在 Gemfile 中,它就會失敗。

如果你發現錯誤或注意到有遺漏的地方,請在 GitHub 上編輯此文件