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