class Delayed::Backend::Test::Job

Attributes

attempts[RW]
failed_at[RW]
handler[RW]
id[RW]
last_error[RW]
locked_at[RW]
locked_by[RW]
priority[RW]
queue[RW]
run_at[RW]

Public Class Methods

all() click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 34
def self.all
  @jobs
end
clear_locks!(worker_name) click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 52
def self.clear_locks!(worker_name)
  all.select { |j| j.locked_by == worker_name }.each { |j| j.locked_by = nil; j.locked_at = nil }
end
count() click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 38
def self.count
  all.size
end
create(attrs = {}) click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 46
def self.create(attrs = {})
  new(attrs).tap(&:save)
end
create!(*args) click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 50
def self.create!(*args); create(*args); end
db_time_now() click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 83
def self.db_time_now
  Time.current
end
delete_all() click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 42
def self.delete_all
  all.clear
end
find_available(worker_name, limit = 5, max_run_time = Worker.max_run_time) click to toggle source

Find a few candidate jobs to run (in case some immediately get locked by others).

# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 57
def self.find_available(worker_name, limit = 5, max_run_time = Worker.max_run_time)
  jobs = all.select do |j|
    j.run_at <= db_time_now &&
    (j.locked_at.nil? || j.locked_at < db_time_now - max_run_time || j.locked_by == worker_name) &&
    !j.failed?
  end

  jobs = jobs.select { |j| Worker.queues.include?(j.queue) }   if Worker.queues.any?
  jobs = jobs.select { |j| j.priority >= Worker.min_priority } if Worker.min_priority
  jobs = jobs.select { |j| j.priority <= Worker.max_priority } if Worker.max_priority
  jobs.sort_by { |j| [j.priority, j.run_at] }[0..limit - 1]
end
new(hash = {}) click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 26
def initialize(hash = {})
  self.attempts = 0
  self.priority = 0
  self.id = (self.class.id += 1)
  hash.each { |k, v| send(:"#{k}=", v) }
end

Public Instance Methods

destroy() click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 92
def destroy
  self.class.all.delete(self)
end
lock_exclusively!(max_run_time, worker) click to toggle source

Lock this job for this worker. Returns true if we have the lock, false otherwise.

# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 72
def lock_exclusively!(max_run_time, worker)
  now = self.class.db_time_now
  if locked_by != worker
    # We don't own this job so we will update the locked_by name and the locked_at
    self.locked_at = now
    self.locked_by = worker
  end

  return true
end
reload() click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 105
def reload
  reset
  self
end
save() click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 96
def save
  self.run_at ||= Time.current

  self.class.all << self unless self.class.all.include?(self)
  true
end
save!() click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 103
def save!; save; end
update_attributes(attrs = {}) click to toggle source
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 87
def update_attributes(attrs = {})
  attrs.each { |k, v| send(:"#{k}=", v) }
  save
end