WSL2上dockerコンテナ実行のRailsデバッグをRubymineから行う(ブレークポイントで止まるようにする)
Windows上で、WSL2 + Docker Desktopにて、Railsをコンテナ実行しつつ、Windows上のRubymineにて、デバッグを行う(ブレークポイントで止める)ための設定をどうするかのメモ書きです。
暇になって、気が向いたらスクリーンショットなども追加します。
必要な事前設定
必要なgemを入れる
下記のgemが必要なので入れる。(:development
,:test
グループ)
- byebug
- debase
- ruby-debug-ide
docker-compose.yml
例として、Rails起動コンテナの docker-compose.yml の設定中、portsの設定に以下を追加します。
ports:
- "1234:1234"
Rubymine上のリモートデバッグの設定
Rubymine上にて、通常、右上にあるデバック部分にて、「実行構成の編集」をクリックします。
左上の「+」ボタンから「Ruby リモートデバッグ」を選択します。
リモートルートフォルダー(dockerコンテナ内のLinux上のパス)とローカルルートフォルダー(Windows上のプロジェクトファイルルートパス)を、プロジェクトのルートフォルダーになるようにそれぞれ設定します。
ここでは、例として、この設定を「Rails Server」という名前で保存したとします。
操作手順
WSL2上の操作
Railsのコンテナ名をweb
とします。
WSL2上のプロジェクトルート(docker-compose.yml)にて、下記のようなコマンドでrdebug-ide
コマンドを実行します。
docker-compose exec web rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -b 0.0.0.0
上記で、dockerコンテナ上のRailsが、デバッグを受け入れるようになります。
RubymineからRailsサーバーにデバッグ接続する
上記の「Rubymine上のリモートでバッグの設定」で設定した「Ruby リモートデバッグ」の「Rails Server」をデバッグ実行する。
上記の「WSL2上の実行」で、デバッグを受け入れていた表示が、Rubymineからの接続を検知し、Railsのデバッグサーバーが起動します。
これにより、Rubymineとデバッグ接続され、Rubymine上のブレークポイントで止まるようになります。
Discussion