resque-scheduler 2.3.1 → 2.4.0
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.
Potentially problematic release.
This version of resque-scheduler might be problematic. Click here for more details.
- data/.gitignore +3 -0
- data/.rubocop.yml +11 -11
- data/.simplecov +1 -0
- data/.travis.yml +5 -2
- data/AUTHORS.md +3 -0
- data/HISTORY.md +26 -2
- data/LICENSE +1 -1
- data/README.md +120 -31
- data/ROADMAP.md +10 -0
- data/Rakefile +7 -19
- data/bin/resque-scheduler +5 -0
- data/examples/Rakefile +2 -0
- data/examples/config/initializers/resque-web.rb +37 -0
- data/examples/dynamic-scheduling/README.md +28 -0
- data/examples/dynamic-scheduling/app/jobs/fix_schedules_job.rb +54 -0
- data/examples/dynamic-scheduling/app/jobs/send_email_job.rb +9 -0
- data/examples/dynamic-scheduling/app/models/user.rb +16 -0
- data/examples/dynamic-scheduling/config/resque.yml +4 -0
- data/examples/dynamic-scheduling/config/static_schedule.yml +7 -0
- data/examples/dynamic-scheduling/lib/tasks/resque.rake +48 -0
- data/examples/run-resque-web +3 -0
- data/lib/resque-scheduler.rb +2 -0
- data/lib/resque/scheduler.rb +130 -41
- data/lib/resque/scheduler/lock/resilient.rb +1 -1
- data/lib/resque/scheduler_locking.rb +3 -1
- data/lib/resque_scheduler.rb +73 -31
- data/lib/resque_scheduler/cli.rb +160 -0
- data/lib/resque_scheduler/logger_builder.rb +27 -8
- data/lib/resque_scheduler/plugin.rb +10 -7
- data/lib/resque_scheduler/server.rb +52 -11
- data/lib/resque_scheduler/server/views/delayed.erb +2 -0
- data/lib/resque_scheduler/server/views/delayed_schedules.erb +20 -0
- data/lib/resque_scheduler/server/views/scheduler.erb +4 -12
- data/lib/resque_scheduler/tasks.rb +15 -27
- data/lib/resque_scheduler/version.rb +1 -1
- data/resque-scheduler.gemspec +2 -0
- data/test/cli_test.rb +286 -0
- data/test/delayed_queue_test.rb +70 -1
- data/test/resque-web_test.rb +36 -1
- data/test/scheduler_args_test.rb +51 -17
- data/test/scheduler_hooks_test.rb +1 -1
- data/test/scheduler_locking_test.rb +63 -1
- data/test/scheduler_setup_test.rb +54 -18
- data/test/scheduler_task_test.rb +35 -0
- data/test/scheduler_test.rb +130 -42
- data/test/support/redis_instance.rb +8 -3
- data/test/test_helper.rb +47 -20
- metadata +77 -6
- checksums.yaml +0 -15
@@ -13,6 +13,7 @@ class RedisInstance
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def run!
|
16
|
+
ensure_redis_server_present!
|
16
17
|
ensure_pid_directory
|
17
18
|
reassign_redis_clients
|
18
19
|
start_redis_server
|
@@ -24,9 +25,7 @@ class RedisInstance
|
|
24
25
|
wait_for_redis_boot
|
25
26
|
|
26
27
|
# Ensure we tear down Redis on Ctrl+C / test failure.
|
27
|
-
at_exit
|
28
|
-
RedisInstance.stop!
|
29
|
-
end
|
28
|
+
at_exit { stop! }
|
30
29
|
else
|
31
30
|
fail "Failed to start Redis on port #{port}."
|
32
31
|
end
|
@@ -49,6 +48,12 @@ class RedisInstance
|
|
49
48
|
|
50
49
|
private
|
51
50
|
|
51
|
+
def ensure_redis_server_present!
|
52
|
+
if !system('redis-server -v')
|
53
|
+
fail "** can't find `redis-server` in your path"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
52
57
|
def wait_for_redis_boot
|
53
58
|
Timeout::timeout(10) do
|
54
59
|
begin
|
data/test/test_helper.rb
CHANGED
@@ -1,33 +1,28 @@
|
|
1
|
-
|
2
1
|
# Pretty much copied this file from the resque test_helper since we want
|
3
2
|
# to do all the same stuff
|
4
3
|
|
5
4
|
dir = File.dirname(File.expand_path(__FILE__))
|
6
5
|
|
7
6
|
require 'rubygems'
|
7
|
+
require 'bundler/setup'
|
8
|
+
|
9
|
+
require 'simplecov' unless RUBY_VERSION < '1.9'
|
10
|
+
|
8
11
|
require 'test/unit'
|
9
12
|
require 'mocha/setup'
|
10
13
|
require 'resque'
|
14
|
+
|
11
15
|
$LOAD_PATH.unshift File.dirname(File.expand_path(__FILE__)) + '/../lib'
|
12
16
|
require 'resque_scheduler'
|
13
17
|
require 'resque_scheduler/server'
|
14
18
|
|
15
|
-
|
16
|
-
#
|
17
|
-
#
|
18
|
-
|
19
|
-
|
20
|
-
puts '', "** can't find `redis-server` in your path"
|
21
|
-
puts "** try running `sudo rake install`"
|
22
|
-
abort ''
|
19
|
+
unless ENV['RESQUE_SCHEDULER_DISABLE_TEST_REDIS_SERVER']
|
20
|
+
# Start our own Redis when the tests start. RedisInstance will take care of
|
21
|
+
# starting and stopping.
|
22
|
+
require File.expand_path('../support/redis_instance', __FILE__)
|
23
|
+
RedisInstance.run!
|
23
24
|
end
|
24
25
|
|
25
|
-
|
26
|
-
# Start our own Redis when the tests start. RedisInstance will take care of
|
27
|
-
# starting and stopping.
|
28
|
-
require File.dirname(__FILE__) + '/support/redis_instance'
|
29
|
-
RedisInstance.run!
|
30
|
-
|
31
26
|
at_exit do
|
32
27
|
next if $!
|
33
28
|
|
@@ -37,7 +32,7 @@ at_exit do
|
|
37
32
|
exit_code = Test::Unit::AutoRunner.run
|
38
33
|
end
|
39
34
|
|
40
|
-
exit
|
35
|
+
exit(exit_code || 0)
|
41
36
|
end
|
42
37
|
|
43
38
|
##
|
@@ -60,6 +55,14 @@ def context(*args, &block)
|
|
60
55
|
klass.class_eval(&block)
|
61
56
|
end
|
62
57
|
|
58
|
+
unless defined?(Rails)
|
59
|
+
module Rails
|
60
|
+
class << self
|
61
|
+
attr_accessor :env
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
63
66
|
class FakeCustomJobClass
|
64
67
|
def self.scheduled(queue, klass, *args); end
|
65
68
|
end
|
@@ -92,9 +95,33 @@ end
|
|
92
95
|
|
93
96
|
JobWithoutParams = Class.new(JobWithParams)
|
94
97
|
|
98
|
+
%w(
|
99
|
+
APP_NAME
|
100
|
+
DYNAMIC_SCHEDULE
|
101
|
+
LOGFILE
|
102
|
+
LOGFORMAT
|
103
|
+
MUTE
|
104
|
+
RAILS_ENV
|
105
|
+
RESQUE_SCHEDULER_INTERVAL
|
106
|
+
VERBOSE
|
107
|
+
).each do |envvar|
|
108
|
+
ENV[envvar] = nil
|
109
|
+
end
|
110
|
+
|
95
111
|
def nullify_logger
|
96
|
-
Resque::Scheduler.
|
97
|
-
|
98
|
-
|
99
|
-
|
112
|
+
Resque::Scheduler.configure do |c|
|
113
|
+
c.mute = nil
|
114
|
+
c.verbose = nil
|
115
|
+
c.logfile = nil
|
116
|
+
c.logger = nil
|
117
|
+
end
|
118
|
+
|
119
|
+
ENV['LOGFILE'] = nil
|
100
120
|
end
|
121
|
+
|
122
|
+
def restore_devnull_logfile
|
123
|
+
nullify_logger
|
124
|
+
ENV['LOGFILE'] = '/dev/null'
|
125
|
+
end
|
126
|
+
|
127
|
+
restore_devnull_logfile
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Ben VandenBos
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: mocha
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,23 @@ dependencies:
|
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: pry
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
37
58
|
requirements:
|
38
59
|
- - ! '>='
|
39
60
|
- !ruby/object:Gem::Version
|
@@ -41,6 +62,7 @@ dependencies:
|
|
41
62
|
- !ruby/object:Gem::Dependency
|
42
63
|
name: rack-test
|
43
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
44
66
|
requirements:
|
45
67
|
- - ! '>='
|
46
68
|
- !ruby/object:Gem::Version
|
@@ -48,6 +70,7 @@ dependencies:
|
|
48
70
|
type: :development
|
49
71
|
prerelease: false
|
50
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
51
74
|
requirements:
|
52
75
|
- - ! '>='
|
53
76
|
- !ruby/object:Gem::Version
|
@@ -55,6 +78,7 @@ dependencies:
|
|
55
78
|
- !ruby/object:Gem::Dependency
|
56
79
|
name: rake
|
57
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
58
82
|
requirements:
|
59
83
|
- - ! '>='
|
60
84
|
- !ruby/object:Gem::Version
|
@@ -62,6 +86,7 @@ dependencies:
|
|
62
86
|
type: :development
|
63
87
|
prerelease: false
|
64
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
65
90
|
requirements:
|
66
91
|
- - ! '>='
|
67
92
|
- !ruby/object:Gem::Version
|
@@ -69,6 +94,23 @@ dependencies:
|
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: rubocop
|
71
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: simplecov
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
72
114
|
requirements:
|
73
115
|
- - ! '>='
|
74
116
|
- !ruby/object:Gem::Version
|
@@ -76,6 +118,7 @@ dependencies:
|
|
76
118
|
type: :development
|
77
119
|
prerelease: false
|
78
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
79
122
|
requirements:
|
80
123
|
- - ! '>='
|
81
124
|
- !ruby/object:Gem::Version
|
@@ -83,6 +126,7 @@ dependencies:
|
|
83
126
|
- !ruby/object:Gem::Dependency
|
84
127
|
name: redis
|
85
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
86
130
|
requirements:
|
87
131
|
- - ! '>='
|
88
132
|
- !ruby/object:Gem::Version
|
@@ -90,6 +134,7 @@ dependencies:
|
|
90
134
|
type: :runtime
|
91
135
|
prerelease: false
|
92
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
93
138
|
requirements:
|
94
139
|
- - ! '>='
|
95
140
|
- !ruby/object:Gem::Version
|
@@ -97,6 +142,7 @@ dependencies:
|
|
97
142
|
- !ruby/object:Gem::Dependency
|
98
143
|
name: resque
|
99
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
100
146
|
requirements:
|
101
147
|
- - ~>
|
102
148
|
- !ruby/object:Gem::Version
|
@@ -104,6 +150,7 @@ dependencies:
|
|
104
150
|
type: :runtime
|
105
151
|
prerelease: false
|
106
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
107
154
|
requirements:
|
108
155
|
- - ~>
|
109
156
|
- !ruby/object:Gem::Version
|
@@ -111,6 +158,7 @@ dependencies:
|
|
111
158
|
- !ruby/object:Gem::Dependency
|
112
159
|
name: rufus-scheduler
|
113
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
114
162
|
requirements:
|
115
163
|
- - ~>
|
116
164
|
- !ruby/object:Gem::Version
|
@@ -118,6 +166,7 @@ dependencies:
|
|
118
166
|
type: :runtime
|
119
167
|
prerelease: false
|
120
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
121
170
|
requirements:
|
122
171
|
- - ~>
|
123
172
|
- !ruby/object:Gem::Version
|
@@ -127,12 +176,14 @@ description: ! "Light weight job scheduling on top of Resque.\n Adds methods
|
|
127
176
|
schedule."
|
128
177
|
email:
|
129
178
|
- bvandenbos@gmail.com
|
130
|
-
executables:
|
179
|
+
executables:
|
180
|
+
- resque-scheduler
|
131
181
|
extensions: []
|
132
182
|
extra_rdoc_files: []
|
133
183
|
files:
|
134
184
|
- .gitignore
|
135
185
|
- .rubocop.yml
|
186
|
+
- .simplecov
|
136
187
|
- .travis.yml
|
137
188
|
- AUTHORS.md
|
138
189
|
- CONTRIBUTING.md
|
@@ -140,7 +191,20 @@ files:
|
|
140
191
|
- HISTORY.md
|
141
192
|
- LICENSE
|
142
193
|
- README.md
|
194
|
+
- ROADMAP.md
|
143
195
|
- Rakefile
|
196
|
+
- bin/resque-scheduler
|
197
|
+
- examples/Rakefile
|
198
|
+
- examples/config/initializers/resque-web.rb
|
199
|
+
- examples/dynamic-scheduling/README.md
|
200
|
+
- examples/dynamic-scheduling/app/jobs/fix_schedules_job.rb
|
201
|
+
- examples/dynamic-scheduling/app/jobs/send_email_job.rb
|
202
|
+
- examples/dynamic-scheduling/app/models/user.rb
|
203
|
+
- examples/dynamic-scheduling/config/resque.yml
|
204
|
+
- examples/dynamic-scheduling/config/static_schedule.yml
|
205
|
+
- examples/dynamic-scheduling/lib/tasks/resque.rake
|
206
|
+
- examples/run-resque-web
|
207
|
+
- lib/resque-scheduler.rb
|
144
208
|
- lib/resque/scheduler.rb
|
145
209
|
- lib/resque/scheduler/lock.rb
|
146
210
|
- lib/resque/scheduler/lock/base.rb
|
@@ -148,10 +212,12 @@ files:
|
|
148
212
|
- lib/resque/scheduler/lock/resilient.rb
|
149
213
|
- lib/resque/scheduler_locking.rb
|
150
214
|
- lib/resque_scheduler.rb
|
215
|
+
- lib/resque_scheduler/cli.rb
|
151
216
|
- lib/resque_scheduler/logger_builder.rb
|
152
217
|
- lib/resque_scheduler/plugin.rb
|
153
218
|
- lib/resque_scheduler/server.rb
|
154
219
|
- lib/resque_scheduler/server/views/delayed.erb
|
220
|
+
- lib/resque_scheduler/server/views/delayed_schedules.erb
|
155
221
|
- lib/resque_scheduler/server/views/delayed_timestamp.erb
|
156
222
|
- lib/resque_scheduler/server/views/requeue-params.erb
|
157
223
|
- lib/resque_scheduler/server/views/scheduler.erb
|
@@ -161,6 +227,7 @@ files:
|
|
161
227
|
- resque-scheduler.gemspec
|
162
228
|
- script/migrate_to_timestamps_set.rb
|
163
229
|
- tasks/resque_scheduler.rake
|
230
|
+
- test/cli_test.rb
|
164
231
|
- test/delayed_queue_test.rb
|
165
232
|
- test/redis-test.conf
|
166
233
|
- test/resque-web_test.rb
|
@@ -168,34 +235,37 @@ files:
|
|
168
235
|
- test/scheduler_hooks_test.rb
|
169
236
|
- test/scheduler_locking_test.rb
|
170
237
|
- test/scheduler_setup_test.rb
|
238
|
+
- test/scheduler_task_test.rb
|
171
239
|
- test/scheduler_test.rb
|
172
240
|
- test/support/redis_instance.rb
|
173
241
|
- test/test_helper.rb
|
174
242
|
homepage: http://github.com/resque/resque-scheduler
|
175
243
|
licenses:
|
176
244
|
- MIT
|
177
|
-
metadata: {}
|
178
245
|
post_install_message:
|
179
246
|
rdoc_options: []
|
180
247
|
require_paths:
|
181
248
|
- lib
|
182
249
|
required_ruby_version: !ruby/object:Gem::Requirement
|
250
|
+
none: false
|
183
251
|
requirements:
|
184
252
|
- - ! '>='
|
185
253
|
- !ruby/object:Gem::Version
|
186
254
|
version: '0'
|
187
255
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
256
|
+
none: false
|
188
257
|
requirements:
|
189
258
|
- - ! '>='
|
190
259
|
- !ruby/object:Gem::Version
|
191
260
|
version: '0'
|
192
261
|
requirements: []
|
193
262
|
rubyforge_project:
|
194
|
-
rubygems_version:
|
263
|
+
rubygems_version: 1.8.23
|
195
264
|
signing_key:
|
196
|
-
specification_version:
|
265
|
+
specification_version: 3
|
197
266
|
summary: Light weight job scheduling on top of Resque
|
198
267
|
test_files:
|
268
|
+
- test/cli_test.rb
|
199
269
|
- test/delayed_queue_test.rb
|
200
270
|
- test/redis-test.conf
|
201
271
|
- test/resque-web_test.rb
|
@@ -203,6 +273,7 @@ test_files:
|
|
203
273
|
- test/scheduler_hooks_test.rb
|
204
274
|
- test/scheduler_locking_test.rb
|
205
275
|
- test/scheduler_setup_test.rb
|
276
|
+
- test/scheduler_task_test.rb
|
206
277
|
- test/scheduler_test.rb
|
207
278
|
- test/support/redis_instance.rb
|
208
279
|
- test/test_helper.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
ZDgyOTE0ZDU0NTg0MDZlNGRlM2ExZjQ0OWY5ZThhM2I3YzEyMGVmYg==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NjFkMGU4MDU2YTZiODdjMjk5NDdjNjY4YTg0MjY2ZWM3MmI5NGJhOA==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
OGIwZjNmYzUyYzQwNGQ0ZjFhMGMzZjdiNTViMDVhYWU3Y2NmZDdiMjEyYzFj
|
10
|
-
MjBmMTU1MTg2ZjQ0M2QzZjJiY2E5ZDZhM2YyYzFlYWZlYWIwZjI1Y2I2NjBh
|
11
|
-
Y2M2ZDgzZDk3ZmRiODQ4ZjhhMGVjYTAxMzU0YjU3MTJiNTM1NTE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MjEwNDRlOTkxNzZkMzQ2Y2U2YjUyY2FkMWEyZDFmZjUwOGUzNzM4YTNjOWJk
|
14
|
-
MTZmMjQzNDczNWM4NjQ2NTk2NmU2OTQ3YzNhM2IwOThjZGUyMGI0MDgyNGQ3
|
15
|
-
NWM4MDVlODllODkxZDM2MDcxNTBlODI2NjkyMjU4MjI3NjdlNjg=
|