48 lines
1.1 KiB
Ruby
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
|