engine/lib/locomotive/delayed_job.rb

48 lines
1.1 KiB
Ruby

require 'delayed_job'
module Delayed
module Backend
module Base
module ClassMethods
# Add a job to the queue
def enqueue(*args)
object = args.shift
unless object.respond_to?(:perform)
raise ArgumentError, 'Cannot enqueue items which do not respond to perform'
end
attributes = {
:job_type => object.class.name.demodulize.underscore,
:payload_object => object,
:priority => Delayed::Worker.default_priority,
:run_at => nil
}
if args.first.respond_to?(:[])
attributes.merge!(args.first)
else
attributes.merge!({
:priority => args.first || Delayed::Worker.default_priority,
:run_at => args[1]
})
end
self.create(attributes)
end
end
def failed?
failed_at.present?
end
end
module Mongoid
class Job
field :job_type
field :step
referenced_in :site
end
end
end
end