😸

WSL2上dockerコンテナ実行のRailsデバッグをRubymineから行う(ブレークポイントで止まるようにする)

2022/08/21に公開

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 リモートデバッグ」を選択します。

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