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, SidekiqExceptionHandler, Stat

Constant Summary collapse

VERSION =
"0.8.0"

Class Method Summary collapse

Class Method Details

.configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (MiniScheduler)

    the object that the method was called on



11
12
13
# File 'lib/mini_scheduler.rb', line 11

def self.configure
  yield self
end

.handle_job_exception(ex, context = {}) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/mini_scheduler.rb', line 24

def self.handle_job_exception(ex, context = {})
  if job_exception_handler
    job_exception_handler.call(ex, context)
  else
    SidekiqExceptionHandler.handle_exception(ex, context)
  end
end

.job_exception_handler(&blk) ⇒ Object



19
20
21
22
# File 'lib/mini_scheduler.rb', line 19

def self.job_exception_handler(&blk)
  @job_exception_handler = blk if blk
  @job_exception_handler
end

.job_ran(&blk) ⇒ Object



40
41
42
43
# File 'lib/mini_scheduler.rb', line 40

def self.job_ran(&blk)
  @job_ran = blk if blk
  @job_ran
end

.redisObject



36
37
38
# File 'lib/mini_scheduler.rb', line 36

def self.redis
  @redis
end

.redis=(r) ⇒ Object



32
33
34
# File 'lib/mini_scheduler.rb', line 32

def self.redis=(r)
  @redis = r
end

.startObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/mini_scheduler.rb', line 45

def self.start
  manager = Manager.new
  Manager.discover_schedules.each do |schedule|
    manager.ensure_schedule!(schedule)
  end
  Thread.new do
    while true
      begin
        manager.tick
      rescue => e
        # the show must go on
        handle_job_exception(e, message: "While ticking scheduling manager")
      end
      sleep 1
    end
  end
end