LoginSignup
17
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-12-07

この記事はモチベーションクラウドシリーズ 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
  • 条件付きブレークポイント

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

参考リンク

17
1
0

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
  3. You can use dark theme
What you can do with signing up
17
1