1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
NamedJob = Struct.new(:perform)
class NamedJob
def display_name
'named_job'
end
end
class SimpleJob
cattr_accessor :runs
@runs = 0
def perform
self.class.runs += 1
end
end
class NamedQueueJob < SimpleJob
def queue_name
'job_tracking'
end
end
class ErrorJob
cattr_accessor :runs
@runs = 0
def perform
raise Exception, 'did not work'
end
end
CustomRescheduleJob = Struct.new(:offset)
class CustomRescheduleJob
cattr_accessor :runs
@runs = 0
def perform
raise 'did not work'
end
def reschedule_at(time, _attempts)
time + offset
end
end
class LongRunningJob
def perform
sleep 250
end
end
class OnPermanentFailureJob < SimpleJob
attr_writer :raise_error
def initialize
@raise_error = false
end
def failure
raise 'did not work' if @raise_error
end
def max_attempts
1
end
end
module M
class ModuleJob
cattr_accessor :runs
@runs = 0
def perform
self.class.runs += 1
end
end
end
class CallbackJob
cattr_accessor :messages
def enqueue(_job)
self.class.messages << 'enqueue'
end
def before(_job)
self.class.messages << 'before'
end
def perform
self.class.messages << 'perform'
end
def after(_job)
self.class.messages << 'after'
end
def success(_job)
self.class.messages << 'success'
end
def error(_job, error)
self.class.messages << "error: #{error.class}"
end
def failure(_job)
self.class.messages << 'failure'
end
end
class EnqueueJobMod < SimpleJob
def enqueue(job)
job.run_at = 20.minutes.from_now
end
end
|