Module: HireFire::Macro::Delayed::Job

Extended by:
Job
Included in:
Job
Defined in:
lib/hirefire/macro/delayed_job.rb

Instance Method Summary collapse

Instance Method Details

#queue(*queues) ⇒ Integer

Determines whether ‘ActiveRecord (3)` or `Mongoid` is being used. Once determined, it will build the appropriate query criteria in order to count the amount of jobs in a given queue and return the result.

Examples:

Delayed::Job Macro Usage

HireFire::Macro::Delayed::Job.queue # all queues
HireFire::Macro::Delayed::Job.queue("email") # only email queue
HireFire::Macro::Delayed::Job.queue("audio", "video") # audio and video queues

Parameters:

  • queues (Array)

    provide one or more queue names, or none for “all”.

Returns:

  • (Integer)

    the number of jobs in the queue(s).



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/hirefire/macro/delayed_job.rb', line 21

def queue(*queues)
  queues.flatten!

  if defined?(Mongoid)
    c = ::Delayed::Job
    c = c.where(:failed_at => nil)
    c = c.where(:run_at.lte => Time.now.utc)
    c = c.where(:queue.in => queues) unless queues.empty?
    c.count
  elsif defined?(ActiveRecord)
    c = ::Delayed::Job
    c = c.where(:failed_at => nil)
    c = c.where("run_at <= ?", Time.now.utc)
    c = c.where(:queue => queues) unless queues.empty?
    c.count
  else
    raise "HireFire could not detect ActiveRecord or Mongoid for HireFire::Macro::Delayed::Job."
  end
end