Methods
A
C
D
F
L
N
R
S
U
Included Modules
Attributes
[RW] attempts
[RW] failed_at
[RW] handler
[RW] id
[RW] last_error
[RW] locked_at
[RW] locked_by
[RW] priority
[RW] queue
[RW] run_at
Class Public methods
all()
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 33
def self.all
  @jobs
end
clear_locks!(worker_name)
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 51
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()
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 37
def self.count
  all.size
end
create(attrs = {})
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 45
def self.create(attrs = {})
  new(attrs).tap(&:save)
end
create!(*args)
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 49
def self.create!(*args); create(*args); end
db_time_now()
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 82
def self.db_time_now
  Time.current
end
delete_all()
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 41
def self.delete_all
  all.clear
end
find_available(worker_name, limit = 5, max_run_time = Worker.max_run_time)

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 56
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 = {})
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 25
def initialize(hash = {})
  self.attempts = 0
  self.priority = 0
  self.id = (self.class.id += 1)
  hash.each{|k,v| send(:"#{k}=", v)}
end
Instance Public methods
destroy()
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 91
def destroy
  self.class.all.delete(self)
end
lock_exclusively!(max_run_time, worker)

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 71
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()
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 104
def reload
  reset
  self
end
save()
# File activejob/test/support/delayed_job/delayed/backend/test.rb, line 95
def save
  self.run_at ||= Time.current

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