要使用 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 的錯誤修正時,您可以透過設定 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/bundle
與 RUBYOPT=-rpry ruby /path/to/bundle
相同。
因此,RUBYOPT=-rpry dbundle
表示「載入 pry 並載入此路徑到 Bundler」,這表示您將使用 pry
和您的本機 bundler 來啟動您的開發環境。
為什麼需要這樣做? 為什麼 require 'pry'; binding.pry
不夠?
結合 RUBYOPT
和 dbundle
的原因在於 Bundler 會接管可用的 gem。如果你在電腦上安裝了 pry
,但 Gemfile 中沒有包含,Bundler 本身會從你可以需要的 gem 清單中移除 pry
。設定 RUBYOPT=-rpry
是在 Bundler 接管並從可需要的 gem 清單中移除 pry
之前,需要 pry
的一種方式。這樣一來,之後你就可以利用 binding.pry
並讓它運作。很不幸的是,如果你等到 binding.pry
的時候才 require 'pry'
,只要 pry
不在 Gemfile 中,它就會失敗。