2016-05-31 9 views
0

Eine vorhandene Rails-App mit Hintergrundprozessen, die von Sidekiq verwaltet werden.So migrieren Sie .delay-Aufgaben von Sidekiq zu Active Job

Wie kann ich Anrufe wandern wie:

Model.delay.some_action()

Von Sidekiq Syntax auf Aktiv Back-End-agnostisch Syntax des Jobs?

Update:

@ craig.karminsky hat das gut geschriebene Sidekiq to Active Job Wiki Page hingewiesen. Diese Seite adressiert Mailer.

Old Sidekiq Syntax:

MyMailer.delay.send_message()

Aktive Job Syntax:

MyMailer.send_message().deliver_later

Das ist für Mailer eine gute Lösung ist, aber wie kann ich wandern nicht-Mailer .delay ruft wie :

NotAMailer.delay.do_something()

Antwort

1

Mike Perham, der Schöpfer von Sidekiq, hat eine sehr gute Wiki page für so eine Situation.

+0

Great Link zu den Docs, ich habe meine Frage aktualisiert, um genauer zu sein. –

+0

Es sah aus wie '.perform_later' ist der Schlüssel für Nicht-Mailer-Jobs im Abschnitt Verwendung auf dieser Seite ... aber es könnte eine bessere Alternative sein, die ich nicht sicher bin! –

+0

Ja 'MyJob.perform_later' ist großartig, aber erfordert einen Job definiert werden. Es gibt vielleicht keine Möglichkeit, 'Model.delay.some_action()' als aktive Jobs einzupacken. –

1

Ich habe einen Edelstein für das oben auf activejob gemacht: https://github.com/cristianbica/activejob-perform_later/. Allerdings ist der Edelstein nicht sehr getestet und dieses Muster ist nicht gut. Mit Code durch Ihre Anwendung, die Verzögerung ausgeführt wird, wird es Ihre App schwer zu pflegen und alle Arten von Fehlern auslösen

+0

Was ist mit deinem Muster, magst du nicht? –