やる気がストロングZERO

やる気のストロングスタイル

【RubyMine】docker-composeのコンテナ内の実行環境でラインデバッグするための設定

dockerコンテナ内にしか実行環境がない(ローカルでは実行できない)場合にrubymindeでラインデバッグ出来るようにするための設定を調べて設定した。メモ。

ここを見ながら設定したらできた。
リモートインタープリターとしてのDocker Composeの使用 - ヘルプ | RubyMine

ざっくり手順

rubymineのruby実行インタプリタとして起動コンテナ内のrubyを指定する

  • rubymineのDockerプラグインを有効にする。(有効にする方法:Docker - ヘルプ | RubyMine
  • dockder-compose.ymlのデバッグしたいserviceのcommandをtail -f /dev/nullにする
    • ※ 特になにもしない状態でコンテナを起動したままにする事が目的なだけのコマンド。
    • ※普通だったらここでrails sとかしている場合が多いと思うけど、rubymineから実行したい場合、既にrails serverが立ち上がってると「既に起動中ですよ」となってしまう。
  • 一旦docker-compose up -dしてコンテナを起動する。(以下に続くruby リモートインタプリタの設定の為。起動していないとrubymineが探しにいけないっぽい。)
  • rubymineに対し、リモートインタープリターとして起動したコンテナ内のrubyを設定する
    • Preference/Languages & Frameworks / Ruby SDK and Gemsを開く
    • [+]ボタンを押す-> New remoteを押す
    • Docker composeを選ぶ
      • Server: Docker
      • Configuration file(s): docker-compose.ymlを選択する
      • Service: rubymindで起動対象のserviceを指定する
      • Environment variables: 特に何も指定しない
      • Ruby or version manager path: ruby(デフォルト)
    • okを押してこれを指定する

ラインデバッグ用の設定を行う

  • デバッグ用gemsをインストールする
    • ラインデバッグするのに必要なgemがあるっぽい
      • gem 'debase'
      • gem 'ruby-debug-ide'
    • をgemfileに追記するなどして、bundle installしておく
  • rubymineのdebugボタンでサーバーを起動するとデバッグモードで起動する。
  • ラインデバッグ用ポインタをおいてアクセスすると、ポインタ部分で処理がストップしてデバッグできる。
  • 「※デバッグ用の通信ができない」とか怒られる場合
    • 一旦コンテナを停止させ、rubymineのdockerウィンドウのdocker起動ボタンを押してdockerコンテナをビルド、起動しなおす。
      • 通常のターミナルではなくrubymineで起動する。
      • デバッグ用の通信ポートが必要みたいで、それを自動的に設定して実行してくれる。