Class: Sidecloq::Schedule
- Inherits:
-
Object
- Object
- Sidecloq::Schedule
show all
- Includes:
- Utils
- Defined in:
- lib/sidecloq/schedule.rb
Overview
Schedule loads and parses recurring job specs from files, hashes, and redis
Constant Summary
collapse
- REDIS_KEY =
:sidecloq_schedule
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Utils
included, #logger, #redis, #will_never_run
Constructor Details
#initialize(specs) ⇒ Schedule
Returns a new instance of Schedule.
10
11
12
|
# File 'lib/sidecloq/schedule.rb', line 10
def initialize(specs)
@job_specs = specs
end
|
Instance Attribute Details
#job_specs ⇒ Object
Returns the value of attribute job_specs.
8
9
10
|
# File 'lib/sidecloq/schedule.rb', line 8
def job_specs
@job_specs
end
|
Class Method Details
.env ⇒ Object
76
77
78
|
# File 'lib/sidecloq/schedule.rb', line 76
def self.env
rails_env || rack_env
end
|
.from_hash(hash) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/sidecloq/schedule.rb', line 34
def self.from_hash(hash)
hash = hash[env] if hash.key?(env)
specs = hash.each_with_object({}) do |(name, spec), memo|
memo[name] = spec.dup.tap do |s|
s['class'] = name unless spec.key?('class') || spec.key?(:class)
s['args'] = s['args'] || s[:args] || []
end
end
new(specs)
end
|
.from_redis ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/sidecloq/schedule.rb', line 18
def self.from_redis
specs = {}
if redis { |r| r.exists(REDIS_KEY) }
specs = {}
redis { |r| r.hgetall(REDIS_KEY) }.tap do |h|
h.each do |name, config|
specs[name] = JSON.parse(config)
end
end
end
from_hash(specs)
end
|
.from_yaml(filename) ⇒ Object
14
15
16
|
# File 'lib/sidecloq/schedule.rb', line 14
def self.from_yaml(filename)
from_hash(YAML.load_file(filename))
end
|
.rack_env ⇒ Object
84
85
86
|
# File 'lib/sidecloq/schedule.rb', line 84
def self.rack_env
ENV['RACK_ENV']
end
|
.rails_env ⇒ Object
80
81
82
|
# File 'lib/sidecloq/schedule.rb', line 80
def self.rails_env
Rails.env if defined?(Rails)
end
|
Instance Method Details
#reset_redis_schedule ⇒ Object
60
61
62
63
64
65
66
|
# File 'lib/sidecloq/schedule.rb', line 60
def reset_redis_schedule
redis do |r|
r.hkeys(REDIS_KEY).each do |k|
r.hdel(REDIS_KEY, k)
end
end
end
|
#save_all_to_redis ⇒ Object
68
69
70
71
72
73
74
|
# File 'lib/sidecloq/schedule.rb', line 68
def save_all_to_redis
redis do |r|
@job_specs.each do |name, spec|
r.hset(REDIS_KEY, name, spec.to_json)
end
end
end
|
#save_redis ⇒ Object
53
54
55
56
|
# File 'lib/sidecloq/schedule.rb', line 53
def save_redis
reset_redis_schedule
save_all_to_redis
end
|
#save_yaml(filename) ⇒ Object
47
48
49
50
51
|
# File 'lib/sidecloq/schedule.rb', line 47
def save_yaml(filename)
File.open(filename, 'w') do |h|
h.write @job_specs.to_yaml
end
end
|