Docs header transparent bg

Bundlerの開発セットアップ

Bundlerを扱うために、次のようなことを行う必要があるでしょう

BundlerとRubyGemsの共同開発

RubyGemsで変更が必要なBundlerの機能またはバグ修正を開発する場合、次のように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フラグは「require」を意味します。つまり、-rpryrequire 'pry'を意味します。たとえば、ruby -rpry /path/to/bundleRUBYOPT=-rpry ruby /path/to/bundleと同じです。

そのため、RUBYOPT=-rpry dbundleは「pryを必要とし、このパスをBundlerに必要とする」ことを意味し、つまり開発環境をpryとローカルbundlerを使用して開始することを意味します。

なぜこれが必要なのですか?require 'pry'; binding.pryだけでは十分ではないのはなぜですか?

RUBYOPTdbundleと組み合わせる理由は、Bundlerが使用可能なジェムを引き継ぐためです。マシンにpryがインストールされているが、Gemfileに含まれていない場合、Bundler自体がpryを必要とするジェムのリストから削除します。RUBYOPT=-rpryを設定すると、Bundlerが引き継いでpryをリストから削除する前に、pryを必要とする方法です。そうすることで、後でbinding.pryを活用して機能させることができます。残念ながら、binding.pryの時点でrequire 'pry'を待っていた場合、pryがGemfileにない場合はいつでも失敗します。

エラーが発生した場合、または何かが不足していることに気づいた場合は、GitHub でこのドキュメントを編集してください