🐛

Rails on docker composeをRubymine/VScodeでステップ実行する

2023/11/30に公開

対象者

  • RubymineまたはVS Codeを使っているひと
  • IDEからステップ実行でデバッグしたいひと

概要

以下の4ステップで説明してます

  • デバッガを設定する
  • docker-compose.ymlを修正する
  • デバッガを起動してブレークポイントで止める

デバッガを設定する

Rubymineの場合

Rubymine右上の「Edit Configurations...」から設定する

左上「+」ボタンから「Ruby remote debug」を選び

  • Remote host: localhost
  • Remote port: 1234
  • Remote root folder: 「リモートのプロジェクトのパス」
  • Local port: 26162
  • Local root folder: 「ローカルのプロジェクトのパス」

を入力する

OKで閉じる

VS Codeの場合

左サイドバーからDebugを選択して「create a launch.json file」でファイルを作成する

以下の情報で保存する

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "rdebug-ide",
      "type": "Ruby",
      "request": "attach",
      "remoteHost": "localhost",
      "remotePort": "1234",
      "remoteWorkspaceRoot": "「リモートのプロジェクトのパス」",
      "cwd": "${workspaceRoot}/「ローカルのプロジェクトのディレクトリ名」"
    }
  ]
}

docker-compose.yml(rails sをしてる場所)を修正する

ステップ1:
bin/rails s -p 3000 -b 0.0.0.0"
を消して
bundle exec rdebug-ide --debug --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -p 3000 -b '0.0.0.0'"
を追加する

ステップ2:
exposeports1234 を追加

修正が終わったら、 dockerの再起動しましょう

$ bin/docker stop
$ bin/docker up -d
$ bin/docker ps # ちゃんと起動できたか確認

デバッガを起動してブレークポイントで止める

Rubymineの場合

Rubymine右上のDebugマークを押して起動します

あとは好きな場所にブレークポイントを設定して

ブラウザから任意のURLを叩く
例↓
http://localhost:3001/

すると止まります

VS Codeの場合

サイドメニューからDebugを選択して、️▶️を押して実行

あとは同上

注意

デバッガを起動しない通常開発に影響があるため、変更したdocker-compose.ymlはpushしないでください。
※dockerが起動したらrevertしてもいいかも。起動時以外はGemfileとdocker-compose.ymlは見てないので

補足

debaseにbetaバージョン指定しないとエラーが発生する事象があるためbetaバージョン指定でインストールしてます
https://zenn.dev/someone7140/articles/63a1128c30664f

Discussion