2011-12-13 20:09:32 +0900
collectiveidea/delayed_jobで定義できるフックメソッド。
collectiveidea/delayed_jobでは、以下のようにカスタムジョブにフックとなるメソッドを定義できる。
class SomeIncredibleJob
def enqueue(job)
end
def perform
end
def before(job)
end
def after(job)
end
def success(job)
end
def error(job, exception)
end
def failure
end
end
enqueue
がジョブをキューイングした時点で呼び出されるのは名前の通りなのでよいとして、それ以外のメソッドが呼ばれるタイミングは以下の通り。
perform
が正常に実行される場合
before
delayed_jobs.locked_at
とdelayed_jobs.locked_by
が更新される
perform
success
after
DELETE FROM delayed_jobs ...
が実行されてジョブが削除される
perform
が例外を発生する場合
before
delayed_jobs.locked_at
とdelayed_jobs.locked_by
が更新される
perform
error
after
attempts
がDelayed::Worker.max_attempts
で定義された回数に達する場合failure
UPDATE delayed_jobs ...
が実行されてattempts
とlast_error
が更新される