resque-scheduler 4.3.0 → 4.7.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.
- checksums.yaml +5 -5
- data/.github/dependabot.yml +12 -0
- data/.github/funding.yml +4 -0
- data/.github/workflows/codeql-analysis.yml +59 -0
- data/.github/workflows/rubocop.yml +27 -0
- data/.github/workflows/ruby.yml +78 -0
- data/AUTHORS.md +9 -0
- data/CHANGELOG.md +510 -0
- data/Gemfile +23 -0
- data/README.md +115 -23
- data/Rakefile +2 -5
- data/lib/resque/scheduler/cli.rb +1 -0
- data/lib/resque/scheduler/configuration.rb +31 -8
- data/lib/resque/scheduler/delaying_extensions.rb +65 -18
- data/lib/resque/scheduler/env.rb +3 -7
- data/lib/resque/scheduler/lock/resilient.rb +19 -12
- data/lib/resque/scheduler/locking.rb +3 -3
- data/lib/resque/scheduler/scheduling_extensions.rb +4 -3
- data/lib/resque/scheduler/server/views/delayed.erb +4 -4
- data/lib/resque/scheduler/server/views/delayed_timestamp.erb +1 -1
- data/lib/resque/scheduler/server/views/scheduler.erb +2 -2
- data/lib/resque/scheduler/server/views/search.erb +0 -3
- data/lib/resque/scheduler/server/views/search_form.erb +1 -5
- data/lib/resque/scheduler/server.rb +1 -1
- data/lib/resque/scheduler/signal_handling.rb +2 -2
- data/lib/resque/scheduler/util.rb +1 -1
- data/lib/resque/scheduler/version.rb +1 -1
- data/lib/resque/scheduler.rb +39 -17
- data/resque-scheduler.gemspec +14 -7
- metadata +39 -27
- data/HISTORY.md +0 -310
@@ -1,9 +1,9 @@
|
|
1
1
|
<h1>Delayed Jobs</h1>
|
2
|
-
|
2
|
+
<% size = resque.delayed_queue_schedule_size %>
|
3
3
|
|
4
4
|
<%= scheduler_view :search_form, layout: false %>
|
5
5
|
|
6
|
-
<p style="
|
6
|
+
<p style="color: red; font-weight: bold;">
|
7
7
|
<%= @error_message %>
|
8
8
|
</p>
|
9
9
|
|
@@ -46,7 +46,7 @@
|
|
46
46
|
<td><%= h(show_job_arguments(job['args'])) if job && delayed_timestamp_size == 1 %></td>
|
47
47
|
<td>
|
48
48
|
<% if job %>
|
49
|
-
<a href="<%=u URI("/delayed/jobs/#{job['class']}?args=" +
|
49
|
+
<a href="<%= u URI("/delayed/jobs/#{CGI.escape(job['class'])}?args=" + CGI.escape(job['args'].to_json)) %>">All schedules</a>
|
50
50
|
<% end %>
|
51
51
|
</td>
|
52
52
|
</tr>
|
@@ -55,7 +55,7 @@
|
|
55
55
|
|
56
56
|
<% if size > 0 %>
|
57
57
|
<br>
|
58
|
-
<form method="POST" action="<%=u 'delayed/clear'%>" class='clear-delayed'>
|
58
|
+
<form method="POST" action="<%= u 'delayed/clear' %>" class='clear-delayed'>
|
59
59
|
<input type='submit' name='' value='Clear Delayed Jobs' />
|
60
60
|
</form>
|
61
61
|
<% end %>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<br/> Current master: <%= Resque.redis.get(Resque::Scheduler.master_lock.key) %>
|
9
9
|
</p>
|
10
10
|
<p class='intro'>
|
11
|
-
|
11
|
+
The highlighted jobs are skipped for current environment.
|
12
12
|
</p>
|
13
13
|
<div style="overflow-y: auto; width:100%; padding: 0px 5px;">
|
14
14
|
<table>
|
@@ -29,7 +29,7 @@
|
|
29
29
|
<% Resque.schedule.keys.sort.each_with_index do |name, index| %>
|
30
30
|
<% config = Resque.schedule[name] %>
|
31
31
|
<tr style="<%= scheduled_in_this_env?(name) ? '' : 'color: #9F6000;background: #FEEFB3;' %>">
|
32
|
-
|
32
|
+
<td style="padding-left: 15px;"><%= index + 1 %>.</td>
|
33
33
|
<% if Resque::Scheduler.dynamic %>
|
34
34
|
<td style="padding-top: 12px; padding-bottom: 2px; width: 10px">
|
35
35
|
<form action="<%= u "/schedule" %>" method="post" style="margin-left: 0">
|
@@ -87,7 +87,7 @@ module Resque
|
|
87
87
|
def delayed_jobs_klass
|
88
88
|
begin
|
89
89
|
klass = Resque::Scheduler::Util.constantize(params[:klass])
|
90
|
-
@args = JSON.load(
|
90
|
+
@args = JSON.load(CGI.unescape(params[:args]))
|
91
91
|
@timestamps = Resque.scheduled_at(klass, *@args)
|
92
92
|
rescue
|
93
93
|
@timestamps = []
|
@@ -10,13 +10,13 @@ module Resque
|
|
10
10
|
end
|
11
11
|
|
12
12
|
# For all signals, set the shutdown flag and wait for current
|
13
|
-
# poll/
|
13
|
+
# poll/enqueuing to finish (should be almost instant). In the
|
14
14
|
# case of sleeping, exit immediately.
|
15
15
|
def register_signal_handlers
|
16
16
|
(Signal.list.keys & %w(INT TERM USR1 USR2 QUIT)).each do |sig|
|
17
17
|
trap(sig) do
|
18
18
|
signal_queue << sig
|
19
|
-
# break sleep in the primary scheduler thread,
|
19
|
+
# break sleep in the primary scheduler thread, allowing
|
20
20
|
# the signal queue to get processed as soon as possible.
|
21
21
|
@th.wakeup if @th && @th.alive?
|
22
22
|
end
|
@@ -4,7 +4,7 @@ module Resque
|
|
4
4
|
module Scheduler
|
5
5
|
class Util
|
6
6
|
# In order to upgrade to resque(1.25) which has deprecated following
|
7
|
-
# methods, we just added these
|
7
|
+
# methods, we just added these useful helpers back to use in Resque
|
8
8
|
# Scheduler. refer to:
|
9
9
|
# https://github.com/resque/resque-scheduler/pull/273
|
10
10
|
|
data/lib/resque/scheduler.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# vim:fileencoding=utf-8
|
2
2
|
|
3
|
+
require 'redis/errors'
|
3
4
|
require 'rufus/scheduler'
|
4
5
|
require_relative 'scheduler/configuration'
|
5
6
|
require_relative 'scheduler/locking'
|
@@ -13,6 +14,9 @@ module Resque
|
|
13
14
|
autoload :Extension, 'resque/scheduler/extension'
|
14
15
|
autoload :Util, 'resque/scheduler/util'
|
15
16
|
autoload :VERSION, 'resque/scheduler/version'
|
17
|
+
INTERMITTENT_ERRORS = [
|
18
|
+
Errno::EAGAIN, Errno::ECONNRESET, Redis::CannotConnectError, Redis::TimeoutError
|
19
|
+
].freeze
|
16
20
|
|
17
21
|
private
|
18
22
|
|
@@ -44,13 +48,7 @@ module Resque
|
|
44
48
|
$stdout.sync = true
|
45
49
|
$stderr.sync = true
|
46
50
|
|
47
|
-
|
48
|
-
# If dynamic is set, load that schedule otherwise use normal load
|
49
|
-
if dynamic
|
50
|
-
reload_schedule!
|
51
|
-
else
|
52
|
-
load_schedule!
|
53
|
-
end
|
51
|
+
was_master = nil
|
54
52
|
|
55
53
|
begin
|
56
54
|
@th = Thread.current
|
@@ -58,11 +56,21 @@ module Resque
|
|
58
56
|
# Now start the scheduling part of the loop.
|
59
57
|
loop do
|
60
58
|
begin
|
61
|
-
|
59
|
+
# Check on changes to master/child
|
60
|
+
@am_master = master?
|
61
|
+
if am_master != was_master
|
62
|
+
procline am_master ? 'Master scheduler' : 'Child scheduler'
|
63
|
+
|
64
|
+
# Load schedule because changed
|
65
|
+
reload_schedule!
|
66
|
+
end
|
67
|
+
|
68
|
+
if am_master
|
62
69
|
handle_delayed_items
|
63
70
|
update_schedule if dynamic
|
64
71
|
end
|
65
|
-
|
72
|
+
was_master = am_master
|
73
|
+
rescue *INTERMITTENT_ERRORS => e
|
66
74
|
log! e.message
|
67
75
|
release_master_lock
|
68
76
|
end
|
@@ -99,7 +107,7 @@ module Resque
|
|
99
107
|
Resque.schedule.each do |name, config|
|
100
108
|
load_schedule_job(name, config)
|
101
109
|
end
|
102
|
-
Resque.redis.del(:schedules_changed)
|
110
|
+
Resque.redis.del(:schedules_changed) if am_master && dynamic
|
103
111
|
procline 'Schedules Loaded'
|
104
112
|
end
|
105
113
|
|
@@ -141,11 +149,7 @@ module Resque
|
|
141
149
|
args = [args, nil, job: true] if args.is_a?(::String)
|
142
150
|
|
143
151
|
job = rufus_scheduler.send(interval_type, *args) do
|
144
|
-
|
145
|
-
log! "queueing #{config['class']} (#{name})"
|
146
|
-
Resque.last_enqueued_at(name, Time.now.to_s)
|
147
|
-
enqueue(config)
|
148
|
-
end
|
152
|
+
enqueue_recurring(name, config)
|
149
153
|
end
|
150
154
|
@scheduled_jobs[name] = job
|
151
155
|
interval_defined = true
|
@@ -206,7 +210,7 @@ module Resque
|
|
206
210
|
loop do
|
207
211
|
handle_shutdown do
|
208
212
|
# Continually check that it is still the master
|
209
|
-
item = enqueue_next_item(timestamp) if
|
213
|
+
item = enqueue_next_item(timestamp) if am_master
|
210
214
|
end
|
211
215
|
# continue processing until there are no more ready items in this
|
212
216
|
# timestamp
|
@@ -247,7 +251,7 @@ module Resque
|
|
247
251
|
if job_klass && job_klass != 'Resque::Job'
|
248
252
|
# The custom job class API must offer a static "scheduled" method. If
|
249
253
|
# the custom job class can not be constantized (via a requeue call
|
250
|
-
# from the web perhaps), fall back to
|
254
|
+
# from the web perhaps), fall back to enqueuing normally via
|
251
255
|
# Resque::Job.create.
|
252
256
|
begin
|
253
257
|
Resque::Scheduler::Util.constantize(job_klass).scheduled(
|
@@ -371,7 +375,12 @@ module Resque
|
|
371
375
|
true
|
372
376
|
end
|
373
377
|
|
378
|
+
def stop_rufus_scheduler
|
379
|
+
rufus_scheduler.shutdown(:wait)
|
380
|
+
end
|
381
|
+
|
374
382
|
def before_shutdown
|
383
|
+
stop_rufus_scheduler
|
375
384
|
release_master_lock
|
376
385
|
end
|
377
386
|
|
@@ -417,6 +426,14 @@ module Resque
|
|
417
426
|
|
418
427
|
private
|
419
428
|
|
429
|
+
def enqueue_recurring(name, config)
|
430
|
+
if am_master
|
431
|
+
log! "queueing #{config['class']} (#{name})"
|
432
|
+
enqueue(config)
|
433
|
+
Resque.last_enqueued_at(name, Time.now.to_s)
|
434
|
+
end
|
435
|
+
end
|
436
|
+
|
420
437
|
def app_str
|
421
438
|
app_name ? "[#{app_name}]" : ''
|
422
439
|
end
|
@@ -432,6 +449,11 @@ module Resque
|
|
432
449
|
def internal_name
|
433
450
|
"resque-scheduler-#{Resque::Scheduler::VERSION}"
|
434
451
|
end
|
452
|
+
|
453
|
+
def am_master
|
454
|
+
@am_master = master? unless defined?(@am_master)
|
455
|
+
@am_master
|
456
|
+
end
|
435
457
|
end
|
436
458
|
end
|
437
459
|
end
|
data/resque-scheduler.gemspec
CHANGED
@@ -11,12 +11,14 @@ Gem::Specification.new do |spec|
|
|
11
11
|
Simon Eskildsen
|
12
12
|
Ryan Biesemeyer
|
13
13
|
Dan Buch
|
14
|
+
Michael Bianco
|
14
15
|
EOF
|
15
16
|
spec.email = %w(
|
16
17
|
bvandenbos@gmail.com
|
17
18
|
sirup@sirupsen.com
|
18
19
|
ryan@yaauie.com
|
19
20
|
dan@meatballhat.com
|
21
|
+
mike@mikebian.co
|
20
22
|
)
|
21
23
|
spec.summary = 'Light weight job scheduling on top of Resque'
|
22
24
|
spec.description = <<-DESCRIPTION
|
@@ -24,13 +26,16 @@ Gem::Specification.new do |spec|
|
|
24
26
|
Adds methods enqueue_at/enqueue_in to schedule jobs in the future.
|
25
27
|
Also supports queueing jobs on a fixed, cron-like schedule.
|
26
28
|
DESCRIPTION
|
27
|
-
spec.homepage = '
|
29
|
+
spec.homepage = 'https://github.com/resque/resque-scheduler'
|
28
30
|
spec.license = 'MIT'
|
31
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
32
|
+
|
33
|
+
spec.required_ruby_version = '>= 2.3.0'
|
29
34
|
|
30
35
|
spec.files = `git ls-files -z`.split("\0").reject do |f|
|
31
36
|
f.match(%r{^(test|spec|features|examples|bin|tasks)/}) ||
|
32
|
-
f.match(/^(Vagrantfile|Gemfile\.lock
|
33
|
-
f.match(/^\.(rubocop|simplecov|
|
37
|
+
f.match(/^(Vagrantfile|Gemfile\.lock)/) ||
|
38
|
+
f.match(/^\.(rubocop|simplecov|vagrant|gitignore)/)
|
34
39
|
end
|
35
40
|
spec.bindir = 'exe'
|
36
41
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
@@ -38,7 +43,6 @@ Gem::Specification.new do |spec|
|
|
38
43
|
|
39
44
|
spec.add_development_dependency 'bundler'
|
40
45
|
spec.add_development_dependency 'json'
|
41
|
-
spec.add_development_dependency 'kramdown'
|
42
46
|
spec.add_development_dependency 'minitest'
|
43
47
|
spec.add_development_dependency 'mocha'
|
44
48
|
spec.add_development_dependency 'pry'
|
@@ -47,13 +51,16 @@ Gem::Specification.new do |spec|
|
|
47
51
|
spec.add_development_dependency 'simplecov'
|
48
52
|
spec.add_development_dependency 'test-unit'
|
49
53
|
spec.add_development_dependency 'yard'
|
54
|
+
spec.add_development_dependency 'timecop'
|
50
55
|
|
51
56
|
# We pin rubocop because new cops have a tendency to result in false-y
|
52
57
|
# positives for new contributors, which is not a nice experience.
|
53
58
|
spec.add_development_dependency 'rubocop', '~> 0.40.0'
|
54
59
|
|
55
60
|
spec.add_runtime_dependency 'mono_logger', '~> 1.0'
|
56
|
-
spec.add_runtime_dependency 'redis', '
|
57
|
-
spec.add_runtime_dependency 'resque', '
|
58
|
-
|
61
|
+
spec.add_runtime_dependency 'redis', '>= 3.3'
|
62
|
+
spec.add_runtime_dependency 'resque', '>= 1.27'
|
63
|
+
# rufus-scheduler v3.7 causes a failure in test/multi_process_test.rb
|
64
|
+
# rufus-scheduler v3.3 is missing a to_local method which fails tests
|
65
|
+
spec.add_runtime_dependency 'rufus-scheduler', '~> 3.2', '!= 3.3'
|
59
66
|
end
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben VandenBos
|
8
8
|
- Simon Eskildsen
|
9
9
|
- Ryan Biesemeyer
|
10
10
|
- Dan Buch
|
11
|
-
|
11
|
+
- Michael Bianco
|
12
|
+
autorequire:
|
12
13
|
bindir: exe
|
13
14
|
cert_chain: []
|
14
|
-
date:
|
15
|
+
date: 2022-10-07 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: bundler
|
@@ -42,7 +43,7 @@ dependencies:
|
|
42
43
|
- !ruby/object:Gem::Version
|
43
44
|
version: '0'
|
44
45
|
- !ruby/object:Gem::Dependency
|
45
|
-
name:
|
46
|
+
name: minitest
|
46
47
|
requirement: !ruby/object:Gem::Requirement
|
47
48
|
requirements:
|
48
49
|
- - ">="
|
@@ -56,7 +57,7 @@ dependencies:
|
|
56
57
|
- !ruby/object:Gem::Version
|
57
58
|
version: '0'
|
58
59
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
+
name: mocha
|
60
61
|
requirement: !ruby/object:Gem::Requirement
|
61
62
|
requirements:
|
62
63
|
- - ">="
|
@@ -70,7 +71,7 @@ dependencies:
|
|
70
71
|
- !ruby/object:Gem::Version
|
71
72
|
version: '0'
|
72
73
|
- !ruby/object:Gem::Dependency
|
73
|
-
name:
|
74
|
+
name: pry
|
74
75
|
requirement: !ruby/object:Gem::Requirement
|
75
76
|
requirements:
|
76
77
|
- - ">="
|
@@ -84,7 +85,7 @@ dependencies:
|
|
84
85
|
- !ruby/object:Gem::Version
|
85
86
|
version: '0'
|
86
87
|
- !ruby/object:Gem::Dependency
|
87
|
-
name:
|
88
|
+
name: rack-test
|
88
89
|
requirement: !ruby/object:Gem::Requirement
|
89
90
|
requirements:
|
90
91
|
- - ">="
|
@@ -98,7 +99,7 @@ dependencies:
|
|
98
99
|
- !ruby/object:Gem::Version
|
99
100
|
version: '0'
|
100
101
|
- !ruby/object:Gem::Dependency
|
101
|
-
name:
|
102
|
+
name: rake
|
102
103
|
requirement: !ruby/object:Gem::Requirement
|
103
104
|
requirements:
|
104
105
|
- - ">="
|
@@ -112,7 +113,7 @@ dependencies:
|
|
112
113
|
- !ruby/object:Gem::Version
|
113
114
|
version: '0'
|
114
115
|
- !ruby/object:Gem::Dependency
|
115
|
-
name:
|
116
|
+
name: simplecov
|
116
117
|
requirement: !ruby/object:Gem::Requirement
|
117
118
|
requirements:
|
118
119
|
- - ">="
|
@@ -126,7 +127,7 @@ dependencies:
|
|
126
127
|
- !ruby/object:Gem::Version
|
127
128
|
version: '0'
|
128
129
|
- !ruby/object:Gem::Dependency
|
129
|
-
name:
|
130
|
+
name: test-unit
|
130
131
|
requirement: !ruby/object:Gem::Requirement
|
131
132
|
requirements:
|
132
133
|
- - ">="
|
@@ -140,7 +141,7 @@ dependencies:
|
|
140
141
|
- !ruby/object:Gem::Version
|
141
142
|
version: '0'
|
142
143
|
- !ruby/object:Gem::Dependency
|
143
|
-
name:
|
144
|
+
name: yard
|
144
145
|
requirement: !ruby/object:Gem::Requirement
|
145
146
|
requirements:
|
146
147
|
- - ">="
|
@@ -154,7 +155,7 @@ dependencies:
|
|
154
155
|
- !ruby/object:Gem::Version
|
155
156
|
version: '0'
|
156
157
|
- !ruby/object:Gem::Dependency
|
157
|
-
name:
|
158
|
+
name: timecop
|
158
159
|
requirement: !ruby/object:Gem::Requirement
|
159
160
|
requirements:
|
160
161
|
- - ">="
|
@@ -199,30 +200,30 @@ dependencies:
|
|
199
200
|
name: redis
|
200
201
|
requirement: !ruby/object:Gem::Requirement
|
201
202
|
requirements:
|
202
|
-
- - "
|
203
|
+
- - ">="
|
203
204
|
- !ruby/object:Gem::Version
|
204
205
|
version: '3.3'
|
205
206
|
type: :runtime
|
206
207
|
prerelease: false
|
207
208
|
version_requirements: !ruby/object:Gem::Requirement
|
208
209
|
requirements:
|
209
|
-
- - "
|
210
|
+
- - ">="
|
210
211
|
- !ruby/object:Gem::Version
|
211
212
|
version: '3.3'
|
212
213
|
- !ruby/object:Gem::Dependency
|
213
214
|
name: resque
|
214
215
|
requirement: !ruby/object:Gem::Requirement
|
215
216
|
requirements:
|
216
|
-
- - "
|
217
|
+
- - ">="
|
217
218
|
- !ruby/object:Gem::Version
|
218
|
-
version: '1.
|
219
|
+
version: '1.27'
|
219
220
|
type: :runtime
|
220
221
|
prerelease: false
|
221
222
|
version_requirements: !ruby/object:Gem::Requirement
|
222
223
|
requirements:
|
223
|
-
- - "
|
224
|
+
- - ">="
|
224
225
|
- !ruby/object:Gem::Version
|
225
|
-
version: '1.
|
226
|
+
version: '1.27'
|
226
227
|
- !ruby/object:Gem::Dependency
|
227
228
|
name: rufus-scheduler
|
228
229
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,6 +231,9 @@ dependencies:
|
|
230
231
|
- - "~>"
|
231
232
|
- !ruby/object:Gem::Version
|
232
233
|
version: '3.2'
|
234
|
+
- - "!="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '3.3'
|
233
237
|
type: :runtime
|
234
238
|
prerelease: false
|
235
239
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -237,6 +241,9 @@ dependencies:
|
|
237
241
|
- - "~>"
|
238
242
|
- !ruby/object:Gem::Version
|
239
243
|
version: '3.2'
|
244
|
+
- - "!="
|
245
|
+
- !ruby/object:Gem::Version
|
246
|
+
version: '3.3'
|
240
247
|
description: |2
|
241
248
|
Light weight job scheduling on top of Resque.
|
242
249
|
Adds methods enqueue_at/enqueue_in to schedule jobs in the future.
|
@@ -246,16 +253,22 @@ email:
|
|
246
253
|
- sirup@sirupsen.com
|
247
254
|
- ryan@yaauie.com
|
248
255
|
- dan@meatballhat.com
|
256
|
+
- mike@mikebian.co
|
249
257
|
executables:
|
250
258
|
- resque-scheduler
|
251
259
|
extensions: []
|
252
260
|
extra_rdoc_files: []
|
253
261
|
files:
|
262
|
+
- ".github/dependabot.yml"
|
263
|
+
- ".github/funding.yml"
|
264
|
+
- ".github/workflows/codeql-analysis.yml"
|
265
|
+
- ".github/workflows/rubocop.yml"
|
266
|
+
- ".github/workflows/ruby.yml"
|
254
267
|
- AUTHORS.md
|
268
|
+
- CHANGELOG.md
|
255
269
|
- CODE_OF_CONDUCT.md
|
256
270
|
- CONTRIBUTING.md
|
257
271
|
- Gemfile
|
258
|
-
- HISTORY.md
|
259
272
|
- LICENSE
|
260
273
|
- README.md
|
261
274
|
- Rakefile
|
@@ -289,11 +302,12 @@ files:
|
|
289
302
|
- lib/resque/scheduler/util.rb
|
290
303
|
- lib/resque/scheduler/version.rb
|
291
304
|
- resque-scheduler.gemspec
|
292
|
-
homepage:
|
305
|
+
homepage: https://github.com/resque/resque-scheduler
|
293
306
|
licenses:
|
294
307
|
- MIT
|
295
|
-
metadata:
|
296
|
-
|
308
|
+
metadata:
|
309
|
+
rubygems_mfa_required: 'true'
|
310
|
+
post_install_message:
|
297
311
|
rdoc_options: []
|
298
312
|
require_paths:
|
299
313
|
- lib
|
@@ -301,17 +315,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
301
315
|
requirements:
|
302
316
|
- - ">="
|
303
317
|
- !ruby/object:Gem::Version
|
304
|
-
version:
|
318
|
+
version: 2.3.0
|
305
319
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
306
320
|
requirements:
|
307
321
|
- - ">="
|
308
322
|
- !ruby/object:Gem::Version
|
309
323
|
version: '0'
|
310
324
|
requirements: []
|
311
|
-
|
312
|
-
|
313
|
-
signing_key:
|
325
|
+
rubygems_version: 3.1.2
|
326
|
+
signing_key:
|
314
327
|
specification_version: 4
|
315
328
|
summary: Light weight job scheduling on top of Resque
|
316
329
|
test_files: []
|
317
|
-
has_rdoc:
|