2016-05-31 11 views
0

Sidekiqで管理されているバックグラウンドプロセスを備えた既存のレールアプリがあるとします。アクティブなジョブのバックエンドとらわれない構文にSidekiqの構文から.delayタスクをSidekiqからアクティブジョブに移行する方法

Model.delay.some_action()

:私のような呼び出しを移行するにはどうすればよい

更新:craig.karminsky @

がよく書かれSidekiq to Active Job Wiki Pageを指摘しています。このページはメーラーに対処しています。

旧Sidekiq構文:

MyMailer.delay.send_message()

アクティブなジョブの構文:

MyMailer.send_message().deliver_later

メーラーのために良い解決策ですが、どのように私は.delayなどの非メーラーの呼び出しを移行することができます:

答えて

1

Sidekeqの作成者であるMike Perhamは、このような状況で非常に良いWiki pageを持っています。

+0

私は質問をより具体的に更新しました。 –

+0

'.perform_later'は、そのページのUsageセクションにあるMailer以外のジョブのキーですが、私が気付いていないよりよい選択肢があるかもしれません! –

+0

うん、 'MyJob.perform_later'は素晴らしいですが、定義されている仕事が必要です。おそらく 'Model.delay.some_action()'呼び出しをアクティブなジョブとしてラップする方法はありません。 –

1

私はactivejobの上にそのための宝石を作った:https://github.com/cristianbica/activejob-perform_later/。しかし、宝石はあまりテストされておらず、このパターンは良いものではありません。あなたのアプリケーションでコードを実行すると、実行が遅れると、あなたのアプリを維持しにくくして、あらゆる種類のバグを引き起こすでしょう。

+0

あなたのパターンはどうですか? –

関連する問題