RubyMine初心者が定期実行させるJobのデバッグに挑戦
はじめに
以前からRubyMineに興味はあったのですが、ずっとVimで開発しています。
最近デバッグで手間がかかっていたので、デバッグにかけるコストを減らしたいと思っていました。
そんなとき、ちょうどAdvent Calendarの記事を見て”試してみる価値あるかも!”と思いました。
ということで、RubyMineをお試しで使ってみることにしました。
まずRailsアプリのデバッグ
こちらは迷うことなくできました。
Railsアプリをプロジェクトとしてオープンして、RunメニューからDebug実行です。
環境も選べるんですね〜
ちゃんと起動しました。
ブレークポイントで停止することも確認できました。
Schedulerで定期実行させるJobのデバッグ
いよいよ本命です。
今作っているアプリで、定期的にJobキューを確認し、Jobの状態に応じてLinuxコマンドを非同期で実行させるような処理があります。(JobTask.executeというクラスメソッド)
コマンド実行時にpidを取得したり、そのpidを使って停止させたりしています。
これまでは、puts文をあっちこっちに仕込み、rails console上でJobTask.executeを実行してデバッグしていました。
これが思いのほか大変だったので、RubyMineで簡単にできたらいいなと思って試そうとしました。
一つの疑問
いざJobTask.executeを実行しようとしましたが、Runメニューには特定のメソッドを実行するようなメニューが見当たりません。
Rails runnerとかRails consoleとかデバッグできないの〜!?と思ってたら、ちゃんとありました。
Rails Console上でデバッグ
まずRails Consoleを起動します。
こちらも環境が選択できます。
起動しました。
この状態でRunメニューをのぞいてみるとRails Consoleでのデバッグができるようになっていました。
そのままデバッガを起動させ、Rails Console上で動かしたいもの(ここではJobTask.execute)を実行します。
仕込んでおいたブレークポイントで停止することが確認できました!
いろいろと使いながら慣れていこうと思います。