Docs header transparent bg

デバッグ

Bundlerのデバッグは難しい場合がありますが、諦めないでください 🤗。

デバッグを試みる前に、開発環境設定のドキュメントに従っていることを確認してください。

最も簡単なデバッグ方法は、デバッグ情報を出力することです。オブジェクトや変数を確認したい箇所にputsステートメントを挿入すると、コンソール出力にputsの内容が表示されます。

これは特にテストを実行する際に役立ちます。

ruby puts "stacktrace: #{caller_locations(0).join("\n")}" puts "@definition: #{@definition}" puts "specification.class.name: #{specification.class.name}" puts "spec.method(:to_checksum).source_location: #{spec.method(:to_checksum).source_location}" # etc

デバッグ出力戦略の詳細については、[TODO: ドキュメントへのリンク]

REPLデバッグ

REPL(Read-Eval-Print Loop)は、コードを対話的に実行する方法です。

REPLを使用すると、オブジェクトや変数の値、スタックトレース、メソッドの定義場所などを確認できます。

REPLを使用するには、確認したい箇所にbinding.irbを配置します。コードがブレークポイントに到達すると、対話型のirbコンソールが開きます。

IRBの使用方法の詳細については、[TODO: ドキュメントへのリンク]

インタラクティブデバッグ

インタラクティブデバッグは、REPLにコードを1行ずつ実行する機能を追加したものです。

Bundlerをローカルでテストする場合、使い慣れたデバッガを使用してインタラクティブデバッグを行うことができます。

debugpry-byebug がよく使用されます。debug はRuby v3.1以降に標準搭載されています。

選択したデバッガgemをグローバルにインストールする必要があります。その後、ローカルのBundlerを実行する前に、コマンドラインでそれをrequireする必要があります。

bash RUBYOPT=-rdebug dbundle # debug gemの場合 RUBYOPT=-rpry-byebug dbundle # pry-byebugの場合

注意 テストスイートではインタラクティブデバッグはできません。ほとんどのテストはOpen3を使用してBundlerをサブプロセスで実行し、出力を文字列に取り込みます。そのため、pryをロードできたとしても、使用することはできません。

ローカル設定

ローカルでテストする最も簡単な方法は、Gemfileを含むディレクトリを作成し、Bundlerシェルエイリアスを実行することです。(エイリアスの設定手順については、開発環境設定のドキュメントを参照してください)。

ローカルテストが誤ってコミットされないように、このディレクトリをtmp内に配置することをお勧めします。

bash cd tmp mkdir [ローカルテスト用ディレクトリ名] && cd [ローカルテスト用ディレクトリ名] dbundle init

これで、テストに必要なGemfileを編集できるようになります。

RubyGemsテストケース

デフォルトでは、初期化されたGemfileのリモートは"https://rubygems.org"です。rubygemsでホストされているgemを追加し、Bundlerシェルエイリアス(dbundle)を実行してコードをテストできます。

```ruby # frozen_string_literal: true

source “https://rubygems.org”

gem ‘tiny_css’ ```

デバッガを一時停止させたい場所にブレークポイントを配置します(debugの場合はbinding.breakpry-byebugの場合はbinding.pry)。Bundlerシェルエイリアスを実行します。

bash RUBYOPT=-rdebug dbundle

ブレークポイントがコンソールに表示され、一時停止します。

ローカルリモートからのGem

テストしたい非常に具体的なシナリオがある場合(テストスイートの実行中に失敗した例など)、最も簡単な方法は、前回のテストスイート実行からのtmp gemを使用することです。

まだ並列でテストスイートを実行していない場合は、実行します。

bash bin/parallel_rspec

ビルドされたgemはbundler/tmpディレクトリ(例:bundler/tmp/1/gems/remote1/)にあります。

テスト実行からビルドされたgemを指すファイルソースを使用してGemfileを設定できます。

```ruby # frozen_string_literal: true

source “file:///[リポジトリのbundlerディレクトリへのパス]/tmp/1/gems/remote1/”

gem “rack”, ‘=0.9.1’ ```

その後、RubyGemsソースからgemを取得したときと同じ方法でテストできます。

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