21 lines
680 B
Ruby
21 lines
680 B
Ruby
|
require 'delayed_job'
|
||
|
|
||
|
module Delayed
|
||
|
class Job < ::ActiveRecord::Base
|
||
|
|
||
|
after_destroy :remove_active_job_lock
|
||
|
|
||
|
def remove_active_job_lock
|
||
|
# only ActiveJob Delayed::Jobs can have a lock
|
||
|
return if !payload_object.is_a?(::ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper)
|
||
|
|
||
|
# deserialize ActiveJob and load it's arguments to generate the lock_key
|
||
|
active_job = ::ActiveJob::Base.deserialize(payload_object.job_data)
|
||
|
active_job.arguments = ::ActiveJob::Arguments.deserialize(active_job.instance_variable_get(:@serialized_arguments))
|
||
|
|
||
|
# remove possible lock
|
||
|
active_job.try(:release_active_job_lock!)
|
||
|
end
|
||
|
end
|
||
|
end
|