Module: MiniScheduler
- Defined in:
- lib/mini_scheduler/web.rb,
lib/mini_scheduler.rb,
lib/mini_scheduler/engine.rb,
lib/mini_scheduler/manager.rb,
lib/mini_scheduler/version.rb,
app/models/mini_scheduler/stat.rb,
lib/mini_scheduler/schedule_info.rb,
lib/mini_scheduler/distributed_mutex.rb,
lib/generators/mini_scheduler/install/install_generator.rb
Overview
Defined Under Namespace
Modules: Generators, Schedule, Web
Classes: DistributedMutex, Engine, Manager, ScheduleInfo, Stat
Constant Summary
collapse
- SidekiqExceptionHandler =
if defined?(Sidekiq.default_configuration) ->(ex, ctx, _config = nil) { Sidekiq.default_configuration.handle_exception(ex, ctx) }
else ->(ex, ctx, _config = nil) { Sidekiq.handle_exception(ex, ctx) }
end
- VERSION =
"0.20.0"
Class Method Summary
collapse
Class Method Details
.before_sidekiq_web_request(&blk) ⇒ Object
52
53
54
55
|
# File 'lib/mini_scheduler.rb', line 52
def self.before_sidekiq_web_request(&blk)
@before_sidekiq_web_request = blk if blk
@before_sidekiq_web_request
end
|
15
16
17
|
# File 'lib/mini_scheduler.rb', line 15
def self.configure
yield self
end
|
.handle_job_exception(ex, context = {}, _config = nil) ⇒ Object
31
32
33
34
35
36
37
|
# File 'lib/mini_scheduler.rb', line 31
def self.handle_job_exception(ex, context = {}, _config = nil)
if job_exception_handler
job_exception_handler.call(ex, context)
else
SidekiqExceptionHandler.call(ex, context)
end
end
|
.job_exception_handler(&blk) ⇒ Object
26
27
28
29
|
# File 'lib/mini_scheduler.rb', line 26
def self.job_exception_handler(&blk)
@job_exception_handler = blk if blk
@job_exception_handler
end
|
.job_ran(&blk) ⇒ Object
47
48
49
50
|
# File 'lib/mini_scheduler.rb', line 47
def self.job_ran(&blk)
@job_ran = blk if blk
@job_ran
end
|
.redis ⇒ Object
43
44
45
|
# File 'lib/mini_scheduler.rb', line 43
def self.redis
@redis
end
|
.redis=(r) ⇒ Object
39
40
41
|
# File 'lib/mini_scheduler.rb', line 39
def self.redis=(r)
@redis = r
end
|
.skip_schedule(&blk) ⇒ Object
57
58
59
60
|
# File 'lib/mini_scheduler.rb', line 57
def self.skip_schedule(&blk)
@skip_schedule = blk if blk
@skip_schedule
end
|
.start(workers: 1) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/mini_scheduler.rb', line 62
def self.start(workers: 1)
schedules = Manager.discover_schedules
Manager.discover_queues.each do |queue|
manager = Manager.new(queue: queue, workers: workers)
schedules.each { |schedule| manager.ensure_schedule!(schedule) if schedule.queue == queue }
Thread.new do
while true
begin
manager.tick if !self.skip_schedule || !self.skip_schedule.call
rescue => e
handle_job_exception(e, message: "While ticking scheduling manager")
end
sleep 1
end
end
end
end
|