RubyMineのリモートデバッガーを使ってDocker Composeで立ち上げたRailsをデバッグしたい
はじめに
Docker-composeで立ち上げたRailsをRubyMineでデバッグしたかったが、なかなか接続できずに苦労したのでその備忘録
環境
- M1 Mac
- macOS Venture 13.3.1
- RubyMain 2023.1 Trial
- Ruby 2.7.8
- すでにRailsアプリがDocker-composeを実行できること
やりかた
準備
-
Edit Configurationsにて、"Ruby remote debug"を追加
設定はこんな感じ
{YOUR_REMOTE_ROOT_FOLDER}と{YOUR_LOCAL_ROOT_FOLDER}は任意のパスに変更してください。 -
GemFileにデバッグ用のGemを追加
~~ (略) ~~ group :development do ~~ (略) ~~ gem "debase", "0.2.5.beta2" gem "ruby-debug-ide" end ~~ (略) ~~
-
docker-compose.yamlのCommandを修正
例えば、修正前に以下の実行コマンドが記載されているとするとcommand: bash -c "bundle exec rails s -p 3000 -b '0.0.0.0'"
このようにrdebug-ideを追加する。この時--portオプションはEdit ConfigurationのRemote portに合わせる。後半は修正前と同じ。
command: bash -c "bundle exec rdebug-ide --debug --host 0.0.0.0 --port 1234 -- bin/rails s -p 3000 -b '0.0.0.0'"
-
ポートを公開する。
引き続きdokcer-compose.yamlでEXPOSE項目にport 1234を追加する。- "1234:1234"
デバッグする
-
ホスト側でアプリケーションを立ち上げる
$ docker-compose up
-
RubyMineでデバッグ実行する。
先ほどのConfigurationを指定して、虫マークをクリック
虫マークが緑になり、ホスト側のターミナルでアプリケーションが立ち上がれば成功。
web-1 | Puma starting in single mode... web-1 | * Puma version: 5.6.5 (ruby 2.7.8-p225) ("Birdie's Version") web-1 | * Min threads: 5 web-1 | * Max threads: 5 web-1 | * Environment: development web-1 | * PID: 1 web-1 | * Listening on http://0.0.0.0:3000 web-1 | Use Ctrl-C to stop
-
あとは実行を止めたい箇所でブレイクポイントを設定すればOK。
終わりに
RubyMineの公式HPのDocker-composeと接続する方法だとうまくいかなかったりと大変でした。