Module: Sidecloq

Defined in:
lib/sidecloq.rb,
lib/sidecloq/web.rb,
lib/sidecloq/utils.rb,
lib/sidecloq/locker.rb,
lib/sidecloq/runner.rb,
lib/sidecloq/version.rb,
lib/sidecloq/schedule.rb,
lib/sidecloq/scheduler.rb,
lib/sidecloq/job_enqueuer.rb

Overview

Sideloq provides a lightweight recurring job scheduler for sidekiq

Defined Under Namespace

Modules: Utils, Web Classes: JobEnqueuer, Locker, Runner, Schedule, Scheduler

Constant Summary collapse

VERSION =
'0.4.8'

Class Method Summary collapse

Class Method Details

.configure {|options| ... } ⇒ Object

Yields:



38
39
40
# File 'lib/sidecloq.rb', line 38

def self.configure
  yield options
end

.extract_scheduleObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/sidecloq.rb', line 58

def self.extract_schedule
  # do our best to do this automatically

  # schedule handed to us
  return options[:schedule] if options[:schedule]

  # try for a file
  options[:schedule_file] ||= 'config/sidecloq.yml'

  if File.exist?(options[:schedule_file])
    return Schedule.from_yaml(options[:schedule_file])
  elsif defined?(Rails)
    # try rails-root-relative
    full_path = File.join(Rails.root, options[:schedule_file])
    if File.exist?(full_path)
      options[:schedule_file] = full_path
      return Schedule.from_yaml(options[:schedule_file])
    end
  end

  # return an empty schedule
  Schedule.new({})
end

.installObject



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/sidecloq.rb', line 18

def self.install
  Sidekiq.configure_server do |config|
    config.on(:startup) do
      Sidecloq.startup
    end

    config.on(:shutdown) do
      Sidecloq.shutdown
    end
  end
end

.optionsObject



30
31
32
# File 'lib/sidecloq.rb', line 30

def self.options
  @options ||= {}
end

.options=(opts) ⇒ Object



34
35
36
# File 'lib/sidecloq.rb', line 34

def self.options=(opts)
  @options = opts
end

.running?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/sidecloq.rb', line 49

def self.running?
 !!@runner
end

.shutdownObject



53
54
55
56
# File 'lib/sidecloq.rb', line 53

def self.shutdown
  @runner.stop(options[:timeout] || 10) if @runner
  @runner = nil
end

.startupObject



42
43
44
45
46
47
# File 'lib/sidecloq.rb', line 42

def self.startup
  options[:schedule] ||= extract_schedule unless options[:scheduler]

  @runner = Runner.new(options)
  @runner.run
end