Module: Marj::ClassMethods

Defined in:
lib/marj.rb

Overview

Provides the #query and #discard class methods.

Instance Method Summary collapse

Instance Method Details

#delete(job) ⇒ ActiveJob::Base

Deletes the record associated with the specified job.

Returns:

  • (ActiveJob::Base)

    the deleted job



76
77
78
# File 'lib/marj.rb', line 76

def delete(job)
  queue_adapter.delete(job)
end

#discard(job) ⇒ ActiveJob::Base

Discards the specified job.

Returns:

  • (ActiveJob::Base)

    the discarded job



69
70
71
# File 'lib/marj.rb', line 69

def discard(job)
  queue_adapter.discard(job)
end

#query(*args, **kwargs) ⇒ Object

Queries enqueued jobs. Similar to ActiveRecord.where with a few additional features:

  • Symbol arguments are treated as ActiveRecord scopes.

  • If only a job ID is specified, the corresponding job is returned.

  • If :limit is specified, the maximum number of jobs is limited.

  • If :order is specified, the jobs are ordered by the given attribute.

By default jobs are ordered by when they should be executed.

Example usage:

query                       # Returns all jobs
query(:all)                 # Returns all jobs
query(:due)                 # Returns jobs which are due to be executed
query(:due, limit: 10)      # Returns at most 10 jobs which are due to be executed
query(job_class: Foo)       # Returns all jobs with job_class Foo
query(:due, job_class: Foo) # Returns jobs which are due to be executed with job_class Foo
query(queue_name: 'foo')    # Returns all jobs in the 'foo' queue
query(job_id: '123')        # Returns the job with job_id '123' or nil if no such job exists
query('123')                # Returns the job with job_id '123' or nil if no such job exists


61
62
63
64
# File 'lib/marj.rb', line 61

def query(*args, **kwargs)
  kwargs[:job_class] ||= self if self < ActiveJob::Base && name != 'ApplicationJob'
  queue_adapter.query(*args, **kwargs)
end