module Qu::Delayed::Backend::Mongo
Public Instance Methods
clear_delayed()
click to toggle source
# File lib/qu/delayed/backend/mongo.rb, line 35 def clear_delayed logger.info { "Clearing delayed jobs queue" } delayed_jobs.drop end
delayed_jobs()
click to toggle source
# File lib/qu/delayed/backend/mongo.rb, line 31 def delayed_jobs self[:delayed_jobs] end
enqueue_at(payload)
click to toggle source
# File lib/qu/delayed/backend/mongo.rb, line 7 def enqueue_at(payload) payload_id = BSON::ObjectId.from_time(payload.run_at, :unique => true) delayed_jobs.insert({ :_id => payload_id, :klass => payload.klass.to_s, :queue => payload.queue, :args => payload.args }) logger.debug { "Enqueued delayed job #{payload}" } payload end
next_delayed_job()
click to toggle source
Retrieves next delayed job.
If there is no job to enqueue returns nil
.
# File lib/qu/delayed/backend/mongo.rb, line 22 def next_delayed_job doc = delayed_jobs.find_and_modify(:query => {:_id => {'$lte' => BSON::ObjectId.from_time(Time.now) }}, :remove => true, :safe => true) return nil if doc.nil? Qu::Delayed::Payload.new(doc).undelay rescue ::Mongo::OperationFailure nil end