Justin Tanner
Justin Tanner

Reputation: 14352

How to migrate .delay tasks from Sidekiq to Active Job

Given an existing rails app with background processes managed by Sidekiq.

How can I migrate calls such as:

Model.delay.some_action()

From Sidekiq's syntax to Active Job's back-end agnostic syntax?

Update:

@craig.karminsky has pointed out the well-written Sidekiq to Active Job Wiki Page. This page addresses mailers.

Old Sidekiq syntax:

MyMailer.delay.send_message()

Active Job syntax:

MyMailer.send_message().deliver_later

That's a good solution for mailers, but how can I migrate non-mailer calls to .delay such as:

NotAMailer.delay.do_something()

Upvotes: 0

Views: 782

Answers (2)

Cristian Bica
Cristian Bica

Reputation: 4117

I've made a gem for that on top of activejob: https://github.com/cristianbica/activejob-perform_later/. However the gem isn't very tested and this pattern is not a good one. Having code through your application that gets executed delay it will make your app hard to maintain and trigger all kind of bugs

Upvotes: 1

craig.kaminsky
craig.kaminsky

Reputation: 5598

Mike Perham, the creator of Sidekiq, has a very good Wiki page up for just such a situation.

Upvotes: 1

Related Questions