que-scheduler 4.0.1 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -3
- data/lib/que/scheduler/configuration.rb +3 -4
- data/lib/que/scheduler/db.rb +2 -0
- data/lib/que/scheduler/defined_job.rb +2 -2
- data/lib/que/scheduler/jobs/que_scheduler_audit_clear_down_job.rb +3 -3
- data/lib/que/scheduler/migrations.rb +6 -1
- data/lib/que/scheduler/schedule.rb +12 -10
- data/lib/que/scheduler/scheduler_job.rb +3 -3
- data/lib/que/scheduler/scheduler_job_args.rb +2 -1
- data/lib/que/scheduler/state_checks.rb +1 -1
- data/lib/que/scheduler/time_zone.rb +61 -0
- data/lib/que/scheduler/to_enqueue.rb +12 -8
- data/lib/que/scheduler/version.rb +1 -1
- data/lib/que/scheduler/version_support.rb +5 -1
- data/lib/que/scheduler.rb +1 -0
- metadata +40 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: adf8110c30a79a8eeddb300dbfe79a1ac283080983dd41befc9a6769b66efcf6
|
4
|
+
data.tar.gz: 2c800a7070b326993bda2eefea85e151ea74e40a9eb6e653fdfd10e47db59eaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a44603e489c6e9a7c7715ef3a53d7a5d4b4743d9e886be1b05daa37d4c3fa47666f80e896eab14d4e3f43ecda5b4cbc3e2532ed85bfe019bc330bb743cefe6e1
|
7
|
+
data.tar.gz: 5534d3ca737011e1a97cd4b909377a31e58f287d782cb5c4f1e09e96a6369a12838896270b89609db07be532eb78195524129aa47626fe87024ad3975820e4f7
|
data/README.md
CHANGED
@@ -2,7 +2,6 @@ que-scheduler
|
|
2
2
|
================
|
3
3
|
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/que-scheduler.svg)](https://badge.fury.io/rb/que-scheduler)
|
5
|
-
[![Build status](https://gitlab.com/hlascelles/que-scheduler/badges/master/pipeline.svg)](https://gitlab.com/hlascelles/que-scheduler/pipelines)
|
6
5
|
[![Coverage Status](https://coveralls.io/repos/github/hlascelles/que-scheduler/badge.svg?branch=master)](https://coveralls.io/github/hlascelles/que-scheduler?branch=master)
|
7
6
|
[![Code Climate Maintainability](https://api.codeclimate.com/v1/badges/710d2fc5202f95d76e8a/maintainability)](https://codeclimate.com/github/hlascelles/que-scheduler/maintainability)
|
8
7
|
|
@@ -107,7 +106,7 @@ DailyBatchReport:
|
|
107
106
|
cron: "0 3 * * *"
|
108
107
|
# This job will be run every day at 03:00 as normal.
|
109
108
|
# However, the "schedule_type: every_event" setting below will ensure that if workers are offline
|
110
|
-
# for any amount of time then the
|
109
|
+
# for any amount of time then the backlog will always be enqueued on recovery.
|
111
110
|
# See "Schedule types" below for more information.
|
112
111
|
schedule_type: every_event
|
113
112
|
```
|
@@ -162,6 +161,14 @@ Que::Scheduler.configure do |config|
|
|
162
161
|
# It *must* be the "highest throughput" queue - do not work the scheduler on a "long
|
163
162
|
# running jobs" queue. It is very unlikely you will want to change this.
|
164
163
|
config.que_scheduler_queue = ENV.fetch("QUE_SCHEDULER_QUEUE", "" or "default")
|
164
|
+
|
165
|
+
# If que-scheduler is being used with Rails, then it will inherit the time zone from that
|
166
|
+
# framework, and you can leave the value as nil as shown below. However, if you are not using
|
167
|
+
# Rails, you may need to set the time zone here. If que-scheduler cannot determine the time zone
|
168
|
+
# it will yield an error prompting you for action.
|
169
|
+
# If you need to set a value, use the string representation:
|
170
|
+
# eg: config.time_zone = "Europe/London"
|
171
|
+
config.time_zone = nil
|
165
172
|
end
|
166
173
|
```
|
167
174
|
|
@@ -220,6 +227,15 @@ The changes in past migrations were:
|
|
220
227
|
| 5 | Dropped an unnecessary index |
|
221
228
|
| 6 | Enforced single scheduler job at the trigger level |
|
222
229
|
|
230
|
+
The changes to the DB ([DDL](https://en.wikipedia.org/wiki/Data_definition_language)) are all
|
231
|
+
captured in the structure.sql so will be re-run in correctly if squashed - except for the actual
|
232
|
+
scheduling of the job itself (as that is [DML](https://en.wikipedia.org/wiki/Data_manipulation_language)).
|
233
|
+
If you squash your migrations make sure this is added as the final line:
|
234
|
+
|
235
|
+
```ruby
|
236
|
+
Que::Scheduler::Migrations.reenqueue_scheduler_if_missing
|
237
|
+
```
|
238
|
+
|
223
239
|
## HA Redundancy and DB restores
|
224
240
|
|
225
241
|
Because of the way que-scheduler works, it requires no additional processes. It is, itself, a Que job.
|
@@ -292,7 +308,7 @@ A full changelog can be found here: [CHANGELOG.md](https://github.com/hlascelles
|
|
292
308
|
|
293
309
|
## System requirements
|
294
310
|
|
295
|
-
Your [postgres](https://www.postgresql.org/) database must be at least version 9.
|
311
|
+
Your [postgres](https://www.postgresql.org/) database must be at least version 9.5.0.
|
296
312
|
|
297
313
|
## Inspiration
|
298
314
|
|
@@ -301,8 +317,10 @@ This gem was inspired by the makers of the excellent [Que](https://github.com/ch
|
|
301
317
|
## Contributors
|
302
318
|
|
303
319
|
* @bnauta
|
320
|
+
* @bjeanes
|
304
321
|
* @JackDanger
|
305
322
|
* @jish
|
306
323
|
* @joehorsnell
|
307
324
|
* @krzyzak
|
308
325
|
* @papodaca
|
326
|
+
* @ajoneil
|
@@ -4,10 +4,8 @@ require_relative "version_support"
|
|
4
4
|
module Que
|
5
5
|
module Scheduler
|
6
6
|
class Configuration
|
7
|
-
attr_accessor :schedule_location
|
8
|
-
|
9
|
-
attr_accessor :transaction_adapter
|
10
|
-
attr_accessor :que_scheduler_queue
|
7
|
+
attr_accessor :schedule_location, :schedule, :transaction_adapter, :que_scheduler_queue,
|
8
|
+
:time_zone
|
11
9
|
end
|
12
10
|
|
13
11
|
class << self
|
@@ -26,6 +24,7 @@ module Que
|
|
26
24
|
config.que_scheduler_queue =
|
27
25
|
ENV.fetch("QUE_SCHEDULER_QUEUE", Que::Scheduler::VersionSupport.default_scheduler_queue)
|
28
26
|
config.schedule = nil
|
27
|
+
config.time_zone = nil
|
29
28
|
end
|
30
29
|
end
|
31
30
|
end
|
data/lib/que/scheduler/db.rb
CHANGED
@@ -18,9 +18,11 @@ module Que
|
|
18
18
|
Que::Scheduler::VersionSupport.execute(NOW_SQL).first.values.first
|
19
19
|
end
|
20
20
|
|
21
|
+
# rubocop:disable Style/ExplicitBlockArgument
|
21
22
|
def transaction
|
22
23
|
Que::Scheduler.configuration.transaction_adapter.call { yield }
|
23
24
|
end
|
25
|
+
# rubocop:enable Style/ExplicitBlockArgument
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -86,10 +86,10 @@ module Que
|
|
86
86
|
# queue name is only supported for a subrange of ActiveJob versions. Print this out as a
|
87
87
|
# warning.
|
88
88
|
if queue &&
|
89
|
-
Que::Scheduler::ToEnqueue.
|
89
|
+
Que::Scheduler::ToEnqueue.active_job_loaded? &&
|
90
90
|
job_class < ::ActiveJob::Base &&
|
91
91
|
Que::Scheduler::ToEnqueue.active_job_version < Gem::Version.create("6.0.3")
|
92
|
-
puts
|
92
|
+
puts <<~ERR
|
93
93
|
WARNING from que-scheduler....
|
94
94
|
Between versions 4.2.3 and 6.0.2 (inclusive) Rails did not support setting queue names
|
95
95
|
on que jobs with ActiveJob, so que-scheduler cannot support it.
|
@@ -8,7 +8,7 @@ module Que
|
|
8
8
|
class QueSchedulerAuditClearDownJob < Que::Job
|
9
9
|
class << self
|
10
10
|
def build_sql(table_name)
|
11
|
-
|
11
|
+
<<~SQL
|
12
12
|
WITH deleted AS (
|
13
13
|
DELETE FROM #{table_name}
|
14
14
|
WHERE scheduler_job_id <= (
|
@@ -28,7 +28,7 @@ module Que
|
|
28
28
|
Que::Scheduler::VersionSupport.set_priority(self, 100)
|
29
29
|
|
30
30
|
def run(options)
|
31
|
-
retain_row_count = options.fetch(:retain_row_count)
|
31
|
+
retain_row_count = options.symbolize_keys.fetch(:retain_row_count)
|
32
32
|
Que::Scheduler::Db.transaction do
|
33
33
|
# This may delete zero or more than `retain_row_count` depending on if anything was
|
34
34
|
# scheduled in each of the past schedule runs
|
@@ -36,7 +36,7 @@ module Que
|
|
36
36
|
# This will delete all but `retain_row_count` oldest rows
|
37
37
|
count = Que::Scheduler::VersionSupport.execute(DELETE_AUDIT_SQL, [retain_row_count])
|
38
38
|
log = "#{self.class} cleared down #{count.first.fetch(:count)} rows"
|
39
|
-
::Que.log(event: "que-scheduler"
|
39
|
+
::Que.log(event: :"que-scheduler", message: log)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -41,6 +41,11 @@ module Que
|
|
41
41
|
result.any?
|
42
42
|
end
|
43
43
|
|
44
|
+
# This method is only intended for use in squashed migrations
|
45
|
+
def reenqueue_scheduler_if_missing
|
46
|
+
Que::Scheduler::SchedulerJob.enqueue if Que::Scheduler::Db.count_schedulers.zero?
|
47
|
+
end
|
48
|
+
|
44
49
|
private
|
45
50
|
|
46
51
|
def migrate_up(current, version)
|
@@ -54,7 +59,7 @@ module Que
|
|
54
59
|
end
|
55
60
|
|
56
61
|
def execute_step(number, direction)
|
57
|
-
sql =
|
62
|
+
sql = File.read("#{__dir__}/migrations/#{number}/#{direction}.sql")
|
58
63
|
Que::Scheduler::VersionSupport.execute(sql)
|
59
64
|
return unless audit_table_exists?
|
60
65
|
|
@@ -27,7 +27,7 @@ module Que
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def from_file(location)
|
30
|
-
from_yaml(
|
30
|
+
from_yaml(File.read(location))
|
31
31
|
end
|
32
32
|
|
33
33
|
def from_yaml(config)
|
@@ -36,21 +36,20 @@ module Que
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def from_hash(config_hash)
|
39
|
-
config_hash.
|
40
|
-
|
41
|
-
|
39
|
+
config_hash.to_h do |name, defined_job_hash|
|
40
|
+
name_str = name.to_s
|
41
|
+
[name_str, hash_item_to_defined_job(name_str, defined_job_hash)]
|
42
|
+
end
|
42
43
|
end
|
43
44
|
|
44
|
-
def hash_item_to_defined_job(name,
|
45
|
+
def hash_item_to_defined_job(name, defined_job_hash_in)
|
46
|
+
defined_job_hash = defined_job_hash_in.stringify_keys
|
45
47
|
# Que stores arguments as a json array. If the args we have to provide are already an
|
46
48
|
# array we can can simply pass them through. If it is a single non-nil value, then we make
|
47
49
|
# an array with one item which is that value (this includes if it is a hash). It could
|
48
50
|
# also be a single nil value.
|
49
51
|
args_array =
|
50
|
-
if
|
51
|
-
# No args were requested
|
52
|
-
[]
|
53
|
-
else
|
52
|
+
if defined_job_hash.key?("args")
|
54
53
|
args = defined_job_hash["args"]
|
55
54
|
if args.is_a?(Array)
|
56
55
|
# An array of args was requested
|
@@ -60,11 +59,14 @@ module Que
|
|
60
59
|
# be enqueued as an array of 1 item
|
61
60
|
[args]
|
62
61
|
end
|
62
|
+
else
|
63
|
+
# No args were requested
|
64
|
+
[]
|
63
65
|
end
|
64
66
|
|
65
67
|
Que::Scheduler::DefinedJob.create(
|
66
68
|
name: name,
|
67
|
-
job_class: defined_job_hash["class"] || name,
|
69
|
+
job_class: defined_job_hash["class"]&.to_s || name,
|
68
70
|
queue: defined_job_hash["queue"],
|
69
71
|
args_array: args_array,
|
70
72
|
priority: defined_job_hash["priority"],
|
@@ -33,7 +33,7 @@ module Que
|
|
33
33
|
scheduler_job_args, scheduler_job_args.as_time, result.job_dictionary, enqueued_jobs
|
34
34
|
)
|
35
35
|
# Only now we're sure nothing errored, log the results
|
36
|
-
logs.each { |str| ::Que.log(event: "que-scheduler"
|
36
|
+
logs.each { |str| ::Que.log(event: :"que-scheduler", message: str) }
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -50,11 +50,11 @@ module Que
|
|
50
50
|
def check_enqueued_job(to_enqueue, enqueued_job, logs)
|
51
51
|
logs << if enqueued_job.present?
|
52
52
|
"que-scheduler enqueueing #{enqueued_job.job_class} " \
|
53
|
-
|
53
|
+
"#{enqueued_job.job_id} with args: #{enqueued_job.args}"
|
54
54
|
else
|
55
55
|
# This can happen if a middleware nixes the enqueue call
|
56
56
|
"que-scheduler called enqueue on #{to_enqueue.job_class} " \
|
57
|
-
|
57
|
+
"but it reported no job was scheduled. Has `enqueue` been overridden?"
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -22,7 +22,8 @@ module Que
|
|
22
22
|
else
|
23
23
|
options = options.symbolize_keys
|
24
24
|
{
|
25
|
-
last_run_time:
|
25
|
+
last_run_time:
|
26
|
+
Que::Scheduler::TimeZone.time_zone.parse(options.fetch(:last_run_time)),
|
26
27
|
job_dictionary: options.fetch(:job_dictionary),
|
27
28
|
}
|
28
29
|
end
|
@@ -19,7 +19,7 @@ module Que
|
|
19
19
|
sync_err =
|
20
20
|
if Que::Scheduler::VersionSupport.running_synchronously? && db_version.zero?
|
21
21
|
code = Que::Scheduler::VersionSupport.running_synchronously_code?
|
22
|
-
|
22
|
+
<<~ERR_SYNC
|
23
23
|
You currently have Que to run in synchronous mode using
|
24
24
|
#{code}, so it is most likely this error
|
25
25
|
has happened during an initial migration. You should disable synchronous mode and
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Que
|
2
|
+
module Scheduler
|
3
|
+
module TimeZone
|
4
|
+
BOTH_CONFIG_AND_TIME_DOT_ZONE_SET = <<~ERR.freeze
|
5
|
+
The que-scheduler config for time_zone has been set to a non-nil value, but
|
6
|
+
it appears to also have been set on Time.zone (possibly by Rails). Both of these
|
7
|
+
cannot be non-nil.
|
8
|
+
You should remove the time_zone config from the que-scheduler config block.
|
9
|
+
ERR
|
10
|
+
|
11
|
+
TIME_ZONE_COULD_NOT_BE_DETERMINED = <<~ERR.freeze
|
12
|
+
It appears Time.zone is nil. This prevents proper functioning of que-scheduler.
|
13
|
+
|
14
|
+
Resolving this issue depends on your application setup.
|
15
|
+
|
16
|
+
1) If you are using Rails, set the standard time_zone config
|
17
|
+
eg:
|
18
|
+
```
|
19
|
+
# In application.rb
|
20
|
+
config.time_zone = "Europe/London"
|
21
|
+
```
|
22
|
+
|
23
|
+
2) If you are not using Rails, set your time zone in the que-scheduler config:
|
24
|
+
eg:
|
25
|
+
```
|
26
|
+
Que::Scheduler.configure do |config|
|
27
|
+
config.time_zone = "Europe/London"
|
28
|
+
end
|
29
|
+
```
|
30
|
+
ERR
|
31
|
+
|
32
|
+
TIME_ZONE_CONFIG_IS_NOT_VALID = <<~ERR.freeze
|
33
|
+
The que-scheduler config for time_zone has been set to a non-nil value, but that value
|
34
|
+
does not yield a real time zone when passed to ActiveSupport::TimeZone.new
|
35
|
+
ERR
|
36
|
+
|
37
|
+
class << self
|
38
|
+
def time_zone
|
39
|
+
@time_zone ||=
|
40
|
+
begin
|
41
|
+
time_dot_zone = Time.zone
|
42
|
+
if time_dot_zone.present?
|
43
|
+
if Que::Scheduler.configuration.time_zone.present?
|
44
|
+
raise BOTH_CONFIG_AND_TIME_DOT_ZONE_SET
|
45
|
+
end
|
46
|
+
|
47
|
+
time_dot_zone
|
48
|
+
elsif Que::Scheduler.configuration.time_zone
|
49
|
+
new_tz = ActiveSupport::TimeZone.new(Que::Scheduler.configuration.time_zone)
|
50
|
+
raise TIME_ZONE_CONFIG_IS_NOT_VALID unless new_tz
|
51
|
+
|
52
|
+
new_tz
|
53
|
+
else
|
54
|
+
raise TIME_ZONE_COULD_NOT_BE_DETERMINED
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -22,14 +22,12 @@ module Que
|
|
22
22
|
type_from_job_class(job_class).present?
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
26
|
-
|
25
|
+
def active_job_loaded?
|
26
|
+
!!active_job_version
|
27
27
|
end
|
28
28
|
|
29
|
-
def
|
30
|
-
|
31
|
-
# https://github.com/rails/rails/pull/20056/files
|
32
|
-
active_job_version && active_job_version > Gem::Version.create("5")
|
29
|
+
def active_job_version
|
30
|
+
Gem.loaded_specs["activejob"]&.version
|
33
31
|
end
|
34
32
|
|
35
33
|
def active_job_version_supports_queues?
|
@@ -56,7 +54,7 @@ module Que
|
|
56
54
|
hash = {
|
57
55
|
::Que::Job => QueJobType,
|
58
56
|
}
|
59
|
-
hash[::ActiveJob::Base] = ActiveJobType if ToEnqueue.
|
57
|
+
hash[::ActiveJob::Base] = ActiveJobType if ToEnqueue.active_job_loaded?
|
60
58
|
hash
|
61
59
|
end
|
62
60
|
end
|
@@ -105,7 +103,13 @@ module Que
|
|
105
103
|
scheduled_at =
|
106
104
|
begin
|
107
105
|
scheduled_at_float = data[:scheduled_at]
|
108
|
-
|
106
|
+
# rubocop:disable Style/EmptyElse
|
107
|
+
if scheduled_at_float
|
108
|
+
Que::Scheduler::TimeZone.time_zone.at(scheduled_at_float)
|
109
|
+
else
|
110
|
+
nil
|
111
|
+
end
|
112
|
+
# rubocop:enable Style/EmptyElse
|
109
113
|
end
|
110
114
|
|
111
115
|
# Rails didn't support queues for ActiveJob for a while
|
@@ -61,7 +61,11 @@ module Que
|
|
61
61
|
|
62
62
|
def zero_major?
|
63
63
|
# This is the only way to handle beta releases too
|
64
|
-
@zero_major ||=
|
64
|
+
@zero_major ||= que_version.split(".").first.to_i.zero?
|
65
|
+
end
|
66
|
+
|
67
|
+
def que_version
|
68
|
+
@que_version ||= Gem.loaded_specs["que"].version.to_s
|
65
69
|
end
|
66
70
|
|
67
71
|
private
|
data/lib/que/scheduler.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: que-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harry Lascelles
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: fugit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
version: '3'
|
54
54
|
- - "<"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
56
|
+
version: '6'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -63,7 +63,7 @@ dependencies:
|
|
63
63
|
version: '3'
|
64
64
|
- - "<"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
66
|
+
version: '6'
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: que
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
version: '0.12'
|
74
74
|
- - "<="
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.0.0.
|
76
|
+
version: 1.0.0.beta5
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -83,21 +83,27 @@ dependencies:
|
|
83
83
|
version: '0.12'
|
84
84
|
- - "<="
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: 1.0.0.
|
86
|
+
version: 1.0.0.beta5
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
88
|
name: activerecord
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
90
90
|
requirements:
|
91
91
|
- - ">="
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: '
|
93
|
+
version: '5.0'
|
94
|
+
- - "<"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '7.0'
|
94
97
|
type: :development
|
95
98
|
prerelease: false
|
96
99
|
version_requirements: !ruby/object:Gem::Requirement
|
97
100
|
requirements:
|
98
101
|
- - ">="
|
99
102
|
- !ruby/object:Gem::Version
|
100
|
-
version: '
|
103
|
+
version: '5.0'
|
104
|
+
- - "<"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '7.0'
|
101
107
|
- !ruby/object:Gem::Dependency
|
102
108
|
name: appraisal
|
103
109
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,7 +147,7 @@ dependencies:
|
|
141
147
|
- !ruby/object:Gem::Version
|
142
148
|
version: '0'
|
143
149
|
- !ruby/object:Gem::Dependency
|
144
|
-
name:
|
150
|
+
name: coveralls_reborn
|
145
151
|
requirement: !ruby/object:Gem::Requirement
|
146
152
|
requirements:
|
147
153
|
- - ">="
|
@@ -210,6 +216,20 @@ dependencies:
|
|
210
216
|
- - ">="
|
211
217
|
- !ruby/object:Gem::Version
|
212
218
|
version: '0'
|
219
|
+
- !ruby/object:Gem::Dependency
|
220
|
+
name: psych
|
221
|
+
requirement: !ruby/object:Gem::Requirement
|
222
|
+
requirements:
|
223
|
+
- - '='
|
224
|
+
- !ruby/object:Gem::Version
|
225
|
+
version: 3.1.0
|
226
|
+
type: :development
|
227
|
+
prerelease: false
|
228
|
+
version_requirements: !ruby/object:Gem::Requirement
|
229
|
+
requirements:
|
230
|
+
- - '='
|
231
|
+
- !ruby/object:Gem::Version
|
232
|
+
version: 3.1.0
|
213
233
|
- !ruby/object:Gem::Dependency
|
214
234
|
name: rake
|
215
235
|
requirement: !ruby/object:Gem::Requirement
|
@@ -256,16 +276,16 @@ dependencies:
|
|
256
276
|
name: rubocop
|
257
277
|
requirement: !ruby/object:Gem::Requirement
|
258
278
|
requirements:
|
259
|
-
- -
|
279
|
+
- - ">="
|
260
280
|
- !ruby/object:Gem::Version
|
261
|
-
version: 0
|
281
|
+
version: '0'
|
262
282
|
type: :development
|
263
283
|
prerelease: false
|
264
284
|
version_requirements: !ruby/object:Gem::Requirement
|
265
285
|
requirements:
|
266
|
-
- -
|
286
|
+
- - ">="
|
267
287
|
- !ruby/object:Gem::Version
|
268
|
-
version: 0
|
288
|
+
version: '0'
|
269
289
|
- !ruby/object:Gem::Dependency
|
270
290
|
name: rubocop-rspec
|
271
291
|
requirement: !ruby/object:Gem::Requirement
|
@@ -355,6 +375,7 @@ files:
|
|
355
375
|
- lib/que/scheduler/scheduler_job.rb
|
356
376
|
- lib/que/scheduler/scheduler_job_args.rb
|
357
377
|
- lib/que/scheduler/state_checks.rb
|
378
|
+
- lib/que/scheduler/time_zone.rb
|
358
379
|
- lib/que/scheduler/to_enqueue.rb
|
359
380
|
- lib/que/scheduler/version.rb
|
360
381
|
- lib/que/scheduler/version_support.rb
|
@@ -367,7 +388,7 @@ metadata:
|
|
367
388
|
changelog_uri: https://github.com/hlascelles/que-scheduler/blob/master/CHANGELOG.md
|
368
389
|
source_code_uri: https://github.com/hlascelles/que-scheduler/
|
369
390
|
bug_tracker_uri: https://github.com/hlascelles/que-scheduler/issues
|
370
|
-
post_install_message:
|
391
|
+
post_install_message:
|
371
392
|
rdoc_options: []
|
372
393
|
require_paths:
|
373
394
|
- lib
|
@@ -382,8 +403,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
382
403
|
- !ruby/object:Gem::Version
|
383
404
|
version: '0'
|
384
405
|
requirements: []
|
385
|
-
rubygems_version: 3.
|
386
|
-
signing_key:
|
406
|
+
rubygems_version: 3.2.7
|
407
|
+
signing_key:
|
387
408
|
specification_version: 4
|
388
409
|
summary: A cron scheduler for Que
|
389
410
|
test_files: []
|