sidekiq-scheduler 1.0 → 1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/README.md +14 -2
- data/lib/sidekiq-scheduler/version.rb +2 -2
- data/lib/sidekiq/scheduler.rb +20 -4
- data/test/lib/sidekiq/scheduler_test.rb +17 -9
- metadata +33 -33
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZDA0ZTJmZGU0ZDdlMDBmOGM0ODUxNWIyNDRkMjRjYmQ2ZTMyYjJmMw==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fe9ce1e132d1192efa54cb8ca59db66637bead8b
|
4
|
+
data.tar.gz: 067965f503c1a8460b15c46297e991d0476c5a53
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NjY2NDZjOWEyYTAyZTQzYjUyMTE5MmU2MzcxMmFjMzJkZWVkMmZhNzFjOTM4
|
11
|
-
ZDY4MTJhODMxZjE1MjgyZTgxM2NjMTYxNTJkMmFiMjhhMTk5MjQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MGU0ZDVmZmE0Yjk3YjRjZTFjOWE1YTA1MmM3M2E1YTI3MDFkODdhZDFlMWUz
|
14
|
-
MzliNWM1MzAyNWM2ZWY5YzUzMzc2NDNlMzA5M2UzYWFiY2ZhNTA3MmYwOTU0
|
15
|
-
M2RiYzU1ZTFlOTFjNDdmMDRkZjBiYTcxNWIzYjU3NTAwOTM5M2I=
|
6
|
+
metadata.gz: 72d123b5fa650afd26e87611411e30a029c4fd9af6e5f3904e1fde525c4793b61924c5e07005f1553b614bb614243c40406639505abe735613c21546e039240a
|
7
|
+
data.tar.gz: a6c10562e33e3c20a865fcbce2ddc280512549482719b2ad0d66750449f3ee9c57bc2c4a604e43055f227dff86f5b3cdeeab042a26d2faccce561daf518b2673
|
data/README.md
CHANGED
@@ -44,7 +44,7 @@ You can add sidekiq-scheduler configuration options to sidekiq.yml config file.
|
|
44
44
|
Available options are:
|
45
45
|
|
46
46
|
:schedule: <the schedule to be run>
|
47
|
-
:dynamic: <if true the schedule can
|
47
|
+
:dynamic: <if true the schedule can be modified in runtime>
|
48
48
|
|
49
49
|
## Scheduled Jobs (Recurring Jobs)
|
50
50
|
|
@@ -119,6 +119,18 @@ You can also put your schedule information inside sidekiq.yml and load it with:
|
|
119
119
|
sidekiq -C ./config/sidekiq.yml
|
120
120
|
```
|
121
121
|
|
122
|
+
#### The Spring preloader and Testing your initializer via Rails console
|
123
|
+
|
124
|
+
If you're pulling in your schedule from a YML file via an initializer as shown, be aware that the Spring application preloader included with Rails will interefere with testing via the Rails console.
|
125
|
+
|
126
|
+
**Spring will not reload initializers** unless the initializer is changed. Therefore, if you're making a change to your YML schedule file and reloading Rails console to see the change, Spring will make it seem like your modified schedule is not being reloaded.
|
127
|
+
|
128
|
+
To see your updated schedule, be sure to reload Spring by stopping it prior to booting the Rails console.
|
129
|
+
|
130
|
+
Run `spring stop` to stop Spring.
|
131
|
+
|
132
|
+
For more information, see [this issue](https://github.com/Moove-it/sidekiq-scheduler/issues/35#issuecomment-48067183) and [Spring's README](https://github.com/rails/spring/blob/master/README.md).
|
133
|
+
|
122
134
|
### Time zones
|
123
135
|
|
124
136
|
Note that if you use the cron syntax, this will be interpreted as in the server time zone
|
@@ -164,4 +176,4 @@ MIT License
|
|
164
176
|
|
165
177
|
Copyright 2013 Moove-IT
|
166
178
|
Copyright 2012 Morton Jonuschat
|
167
|
-
Some parts copyright 2010 Ben VandenBos
|
179
|
+
Some parts copyright 2010 Ben VandenBos
|
@@ -1,3 +1,3 @@
|
|
1
1
|
module SidekiqScheduler
|
2
|
-
VERSION = '1.
|
3
|
-
end
|
2
|
+
VERSION = '1.1'
|
3
|
+
end
|
data/lib/sidekiq/scheduler.rb
CHANGED
@@ -7,8 +7,13 @@ module Sidekiq
|
|
7
7
|
class Scheduler
|
8
8
|
extend Sidekiq::Util
|
9
9
|
|
10
|
+
# We expect rufus jobs to have #params
|
11
|
+
Rufus::Scheduler::Job.module_eval do
|
12
|
+
alias_method :params, :opts
|
13
|
+
end
|
14
|
+
|
10
15
|
class << self
|
11
|
-
# If set, will try to update the
|
16
|
+
# If set, will try to update the schedule in the loop
|
12
17
|
attr_accessor :dynamic
|
13
18
|
end
|
14
19
|
|
@@ -77,7 +82,10 @@ module Sidekiq
|
|
77
82
|
if !config[interval_type].nil? && config[interval_type].length > 0
|
78
83
|
args = self.optionizate_interval_value(config[interval_type])
|
79
84
|
|
80
|
-
|
85
|
+
# We want rufus_scheduler to return a job object, not a job id
|
86
|
+
opts = { :job => true }
|
87
|
+
|
88
|
+
@@scheduled_jobs[name] = self.rufus_scheduler.send(interval_type, *args, opts) do
|
81
89
|
logger.info "queueing #{config['class']} (#{name})"
|
82
90
|
config.delete(interval_type)
|
83
91
|
self.handle_errors { self.enqueue_from_config(config) }
|
@@ -123,8 +131,16 @@ module Sidekiq
|
|
123
131
|
Sidekiq::Client.push(config)
|
124
132
|
end
|
125
133
|
|
134
|
+
def self.rufus_scheduler_options
|
135
|
+
@rufus_scheduler_options ||= {}
|
136
|
+
end
|
137
|
+
|
138
|
+
def self.rufus_scheduler_options=(options)
|
139
|
+
@rufus_scheduler_options = options
|
140
|
+
end
|
141
|
+
|
126
142
|
def self.rufus_scheduler
|
127
|
-
@rufus_scheduler ||= Rufus::Scheduler.
|
143
|
+
@rufus_scheduler ||= Rufus::Scheduler.new rufus_scheduler_options
|
128
144
|
end
|
129
145
|
|
130
146
|
# Stops old rufus scheduler and creates a new one. Returns the new
|
@@ -167,4 +183,4 @@ module Sidekiq
|
|
167
183
|
end
|
168
184
|
|
169
185
|
end
|
170
|
-
end
|
186
|
+
end
|
@@ -52,7 +52,7 @@ class ManagerTest < Minitest::Test
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'config makes it into the rufus_scheduler' do
|
55
|
-
assert_equal(0, Sidekiq::Scheduler.rufus_scheduler.
|
55
|
+
assert_equal(0, Sidekiq::Scheduler.rufus_scheduler.jobs.size)
|
56
56
|
Sidekiq.schedule = {
|
57
57
|
:some_ivar_job => {
|
58
58
|
'cron' => '* * * * *',
|
@@ -63,11 +63,19 @@ class ManagerTest < Minitest::Test
|
|
63
63
|
|
64
64
|
Sidekiq::Scheduler.load_schedule!
|
65
65
|
|
66
|
-
assert_equal(1, Sidekiq::Scheduler.rufus_scheduler.
|
66
|
+
assert_equal(1, Sidekiq::Scheduler.rufus_scheduler.jobs.size)
|
67
67
|
assert Sidekiq::Scheduler.scheduled_jobs.include?(:some_ivar_job)
|
68
68
|
end
|
69
69
|
|
70
|
-
|
70
|
+
it 'can pass options to the Rufus scheduler instance' do
|
71
|
+
options = { :lockfile => '/tmp/rufus_lock' }
|
72
|
+
|
73
|
+
Sidekiq::Scheduler.rufus_scheduler_options = options
|
74
|
+
Rufus::Scheduler.expects(:new).with(options)
|
75
|
+
|
76
|
+
Sidekiq::Scheduler.clear_schedule!
|
77
|
+
end
|
78
|
+
|
71
79
|
it 'can reload schedule' do
|
72
80
|
Sidekiq::Scheduler.dynamic = true
|
73
81
|
Sidekiq.schedule = {
|
@@ -99,7 +107,7 @@ class ManagerTest < Minitest::Test
|
|
99
107
|
|
100
108
|
Sidekiq::Scheduler.reload_schedule!
|
101
109
|
|
102
|
-
|
110
|
+
refute Sidekiq::Scheduler.scheduled_jobs.include?('some_ivar_job')
|
103
111
|
assert Sidekiq::Scheduler.scheduled_jobs.include?('some_ivar_job2')
|
104
112
|
|
105
113
|
assert_equal '/tmp/2', Sidekiq.schedule['some_ivar_job2']['args']
|
@@ -115,7 +123,7 @@ class ManagerTest < Minitest::Test
|
|
115
123
|
}
|
116
124
|
)
|
117
125
|
|
118
|
-
assert_equal(1, Sidekiq::Scheduler.rufus_scheduler.
|
126
|
+
assert_equal(1, Sidekiq::Scheduler.rufus_scheduler.jobs.size)
|
119
127
|
assert_equal(1, Sidekiq::Scheduler.scheduled_jobs.size)
|
120
128
|
assert Sidekiq::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
|
121
129
|
end
|
@@ -130,7 +138,7 @@ class ManagerTest < Minitest::Test
|
|
130
138
|
}
|
131
139
|
)
|
132
140
|
|
133
|
-
assert_equal(1, Sidekiq::Scheduler.rufus_scheduler.
|
141
|
+
assert_equal(1, Sidekiq::Scheduler.rufus_scheduler.jobs.size)
|
134
142
|
assert_equal(1, Sidekiq::Scheduler.scheduled_jobs.size)
|
135
143
|
assert Sidekiq::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
|
136
144
|
assert Sidekiq::Scheduler.scheduled_jobs['some_ivar_job'].params.keys.include?(:first_in)
|
@@ -146,7 +154,7 @@ class ManagerTest < Minitest::Test
|
|
146
154
|
}
|
147
155
|
)
|
148
156
|
|
149
|
-
assert_equal(1, Sidekiq::Scheduler.rufus_scheduler.
|
157
|
+
assert_equal(1, Sidekiq::Scheduler.rufus_scheduler.jobs.size)
|
150
158
|
assert_equal(1, Sidekiq::Scheduler.scheduled_jobs.size)
|
151
159
|
assert Sidekiq::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
|
152
160
|
assert Sidekiq::Scheduler.scheduled_jobs['some_ivar_job'].params.keys.include?(:allow_overlapping)
|
@@ -161,7 +169,7 @@ class ManagerTest < Minitest::Test
|
|
161
169
|
}
|
162
170
|
)
|
163
171
|
|
164
|
-
assert_equal(0, Sidekiq::Scheduler.rufus_scheduler.
|
172
|
+
assert_equal(0, Sidekiq::Scheduler.rufus_scheduler.jobs.size)
|
165
173
|
assert_equal(0, Sidekiq::Scheduler.scheduled_jobs.size)
|
166
174
|
assert !Sidekiq::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
|
167
175
|
end
|
@@ -176,7 +184,7 @@ class ManagerTest < Minitest::Test
|
|
176
184
|
}
|
177
185
|
)
|
178
186
|
|
179
|
-
assert_equal(0, Sidekiq::Scheduler.rufus_scheduler.
|
187
|
+
assert_equal(0, Sidekiq::Scheduler.rufus_scheduler.jobs.size)
|
180
188
|
assert_equal(0, Sidekiq::Scheduler.scheduled_jobs.size)
|
181
189
|
assert !Sidekiq::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
|
182
190
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Morton Jonuschat
|
@@ -9,152 +9,152 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-05-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sidekiq
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '3'
|
21
|
-
- -
|
21
|
+
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: '2.12'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
|
-
- - ~>
|
28
|
+
- - "~>"
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '3'
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '2.12'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: redis
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rufus-scheduler
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: multi_json
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1'
|
69
69
|
type: :runtime
|
70
70
|
prerelease: false
|
71
71
|
version_requirements: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1'
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
77
|
name: rake
|
78
78
|
requirement: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '10.0'
|
83
83
|
type: :development
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '10.0'
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
91
|
name: timecop
|
92
92
|
requirement: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
type: :development
|
98
98
|
prerelease: false
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: mocha
|
106
106
|
requirement: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - ~>
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
- !ruby/object:Gem::Dependency
|
119
119
|
name: minitest
|
120
120
|
requirement: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - ~>
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '5.0'
|
125
125
|
type: :development
|
126
126
|
prerelease: false
|
127
127
|
version_requirements: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - ~>
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '5.0'
|
132
132
|
- !ruby/object:Gem::Dependency
|
133
133
|
name: mock_redis
|
134
134
|
requirement: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - ~>
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
type: :development
|
140
140
|
prerelease: false
|
141
141
|
version_requirements: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - ~>
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: simplecov
|
148
148
|
requirement: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - ~>
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
type: :development
|
154
154
|
prerelease: false
|
155
155
|
version_requirements: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - ~>
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
description: Light weight job scheduling extension for Sidekiq that adds support for
|
@@ -192,25 +192,25 @@ require_paths:
|
|
192
192
|
- lib
|
193
193
|
required_ruby_version: !ruby/object:Gem::Requirement
|
194
194
|
requirements:
|
195
|
-
- -
|
195
|
+
- - ">="
|
196
196
|
- !ruby/object:Gem::Version
|
197
197
|
version: '0'
|
198
198
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
|
-
- -
|
200
|
+
- - ">="
|
201
201
|
- !ruby/object:Gem::Version
|
202
202
|
version: '0'
|
203
203
|
requirements: []
|
204
204
|
rubyforge_project:
|
205
|
-
rubygems_version: 2.2.
|
205
|
+
rubygems_version: 2.2.2
|
206
206
|
signing_key:
|
207
207
|
specification_version: 4
|
208
208
|
summary: Light weight job scheduling extension for Sidekiq
|
209
209
|
test_files:
|
210
|
+
- test/config.yml
|
211
|
+
- test/fake_env.rb
|
212
|
+
- test/lib/sidekiq/scheduler_test.rb
|
210
213
|
- test/schedule_test.rb
|
211
|
-
- test/support/my_worker.rb
|
212
214
|
- test/support/direct_worker.rb
|
215
|
+
- test/support/my_worker.rb
|
213
216
|
- test/test_helper.rb
|
214
|
-
- test/lib/sidekiq/scheduler_test.rb
|
215
|
-
- test/fake_env.rb
|
216
|
-
- test/config.yml
|