on heroku, use delayed_job run asynchronous tasks. until git push heroku master , heroku environment kills worker threads in-process.
the issue here jobs never re-queued since delayed_job table in db shows them still locked , running, though workers used servicing them long dead.
how prevent situation occurring? i'd heroku wait delayed jobs in progress complete or error out before closing down, or @ least terminate them , allow new worker assigned them once server comes post-reboot changes being applied update.
looks can configure dj handle sigterm , mark in-progress jobs failed (so they'll restarted again):
use setting throw exception on term signals adding in initializer:
delayed::worker.raise_signal_exceptions = :term
more info in answer: https://stackoverflow.com/a/16811844/1715829