非同期処理のデバッグ(Rails)
2020/07/25 21:54
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Rails">Rails</a>における非同期処理の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%D0%A5%C3%A5%B0">デバッグ</a>方法を備忘録としてまとめた。<br /> なお、非同期処理はSidekiqを用いて実現しているものとする。</p> <ul> <li>gemを使って処理を止める</li> </ul><p>非同期処理中でも以下のgemを使用すれば、バックグラウンドで動いているプロセスを<code>binding.remote_pry</code>で止められるらしい。(まだ試したことはない)<br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2FMon-Ouie%2Fpry-remote" title="Mon-Ouie/pry-remote" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://github.com/Mon-Ouie/pry-remote">github.com</a></cite></p><p></p> <ul> <li>Workerを直接実行させたうえで、binding.pryを使って処理を止める</li> </ul><p>例えば<code>TestWorker</code>というWorkerがあるとして、そいつを直接実行するには<a class="keyword" href="http://d.hatena.ne.jp/keyword/rails">rails</a> consoleで以下を実行すればいい。(非同期処理を無理矢理同期的に実行させている)<br /> この方法であれば、<code>binding.pry</code>でも処理を一時停止させることができる。</p> <pre class="code lang-ruby" data-lang="ruby" data-unlink><span class="synType">TestWorker</span>.new.perform </pre>