Module: Qu::Delayed::Backend::Mongo
- Defined in:
- lib/qu/delayed/backend/mongo.rb
Instance Method Summary collapse
- #clear_delayed ⇒ Object
- #delayed_jobs ⇒ Object
- #enqueue_at(payload) ⇒ Object
-
#next_delayed_job ⇒ Object
Retrieves next delayed job.
Instance Method Details
#clear_delayed ⇒ Object
35 36 37 38 |
# File 'lib/qu/delayed/backend/mongo.rb', line 35 def clear_delayed logger.info { "Clearing delayed jobs queue" } delayed_jobs.drop end |
#delayed_jobs ⇒ Object
31 32 33 |
# File 'lib/qu/delayed/backend/mongo.rb', line 31 def delayed_jobs self[:delayed_jobs] end |
#enqueue_at(payload) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# 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 ⇒ Object
Retrieves next delayed job.
If there is no job to enqueue returns nil
.
22 23 24 25 26 27 28 29 |
# 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 |