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が正常に実行される場合
beforedelayed_jobs.locked_atとdelayed_jobs.locked_byが更新される
performsuccessafterDELETE FROM delayed_jobs ...が実行されてジョブが削除される
performが例外を発生する場合
beforedelayed_jobs.locked_atとdelayed_jobs.locked_byが更新される
performerrorafterattemptsがDelayed::Worker.max_attemptsで定義された回数に達する場合failure
UPDATE delayed_jobs ...が実行されてattemptsとlast_errorが更新される