Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I debug code running in a delayed_job task in the IRB console?

I have a background task that runs using delayed_job.

I can see that it does run from the logging statements. It does not seem to have the correct result, compared to running it in the foreground, so I want to debug it in the IRB console.

I am running the background task with

rake jobs:work

and it does not trigger the debugger statement.

How can I load the debugger?

like image 574
s01ipsist Avatar asked Aug 09 '13 01:08

s01ipsist


2 Answers

Start a standard rails console

ruby script/console 

And start a worker inside here, this will see and trigger the debugger statement.

worker = Delayed::Worker.new worker.start 
like image 122
s01ipsist Avatar answered Sep 28 '22 05:09

s01ipsist


I use pry as my console and remote debugger. Pry website here, Pry rails gem here. In your code, you add binding.pry statements to have your app stop executing and open the console. It works the same with delayed_job as it does with your rails app. Make sure you are running delayed_job in the foreground though, so it is still attached to the terminal. E.g., start delayed_job with:

rake jobs:work
like image 36
pduey Avatar answered Sep 28 '22 06:09

pduey