LoginSignup
0

posted at

updated at

RailsアプリケーションのRubyMineでのデバッグ開始方法5つ

この記事はモチベーションクラウドシリーズ Advent Calendar 2022 の投稿です。

Execute in the context of Rails を伝えたくて書きました。


Rails server

Railsのプロジェクトを開くと自動で設定されています

image.png

Development: アプリケーション名 を選択し、デバッグを開始します

image.png

指定したIP addressとPortでアクセスすれば、ブラウザ操作やCurlコマンドなど、RubyMine外からのアクセスで、ブレークポイントで停止します

image.png


Rails console

一度 [Tools] > [Run Rails Console...] を実行し、停止します

image.png

すると Rails console: アプリケーション名 の設定が自動で作成されます

image.png

Rails console: アプリケーション名 を選択し、デバッグを開始します

image.png

Rails Console に何か打ち込んで実行すると、ブレークポイントで停止します

image.png

image.png


rake task

実行したいtaskの三角形から Debugを開始します

image.png

image.png

ブレークポイントで停止します

image.png

テストコード(Minitest, RSpec)

実行したいテストの三角形から Debugを開始します

image.png

image.png

ブレークポイントで停止します

image.png

IntegrationTest や Request spec であれば、呼び出される側の処理(コントローラー等)でも止まります

image.png

デバッグしたい Controller や Action が明確な場合は Rails server ではなく、テストコードから実行をします。
デバッグ開始が楽なのと、再実行が容易なためです。

既存テストに試したいケースがない場合も、テストコードの準備データを書き換えたり、一時的にテストを追加してそれを実行します。

「この画面操作でこのコード通るんだっけ?」くらい未知の場合や、「再現するデータはあるけどまだ原因がわからない」といった場合に、 Rails server で起動して画面操作からデバッグをすることが多いです。


Ruby script

純粋なRubyスクリプトは、ファイルを右クリックするか、 Current Fileを選択してデバッグできます

image.png

image.png

Execute in the context of Rails

Run Configuration で Execute in the context of Rails のチェックをつけると Rails 上で動いている状態でデバッグできます。

image.png

image.png

この例でいうと、Active Record の User モデル が使えるようになっています。

image.png

Rails console だと「デバッグする前ににいくつもデータ準備のコードを事前実行し、その後で初めてデバッグ箇所を実行しないといけない」といったことがあります。

何度もconsoleにコピペするのは面倒なので、使い捨てスクリプトとしてファイルを作成して、こっちでデバッグすることが多いです。

まとめ

デバッグ自体にも便利な機能がいくつもあります。

例:

  • コールスタックの表示
  • 変数の中身のインライン表示
  • 実行中の変数変更
  • 好きな変数や式を登録して監視できる Watches
  • 停止位置で好きなコードを実行して結果を見ることができる Interactive console
  • 条件付きブレークポイント

ぜひ使いこなして快適なデバッグライフを。

参考リンク

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0