que-scheduler 7.2.0 → 8.0.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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/lib/que/scheduler/configuration.rb +0 -1
- data/lib/que/scheduler/db_support.rb +1 -8
- data/lib/que/scheduler/defined_job.rb +3 -23
- data/lib/que/scheduler/to_enqueue.rb +6 -34
- data/lib/que/scheduler/version.rb +1 -1
- metadata +8 -53
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 77e19a08d2c15c1f6c40f0c3b924f5f72316fcf9827e3f99bcfff7a0df759b71
|
|
4
|
+
data.tar.gz: 7be4dbc6187cbbe530540bc64e2f4051f12cb0fc23ca4f69275dfd70d966e828
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: be271ad6ca3d25ddf106352a44933cb1400381c006d1e7c15b1467093adec05f78e57beaf2eb51cba197ccf30b800561d74eb27d7dee367eb9af2106197c129c
|
|
7
|
+
data.tar.gz: abedfcada9b8fc855542844b2c5325a3d518523176d4070e8e912036934d6118d65e7627cf0c29cada59ca68c3f35eb9705872525a4d349ff7cdd460ba343084
|
data/README.md
CHANGED
|
@@ -5,7 +5,6 @@ que-scheduler
|
|
|
5
5
|
[](https://github.com/hlascelles/que-scheduler/actions)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
[](https://coveralls.io/github/hlascelles/que-scheduler?branch=master)
|
|
8
|
-
[](https://codeclimate.com/github/hlascelles/que-scheduler/maintainability)
|
|
9
8
|
|
|
10
9
|
## Description
|
|
11
10
|
|
|
@@ -317,9 +316,10 @@ A full changelog can be found here: [CHANGELOG.md](https://github.com/hlascelles
|
|
|
317
316
|
|
|
318
317
|
## System requirements
|
|
319
318
|
|
|
320
|
-
Your [postgres](https://www.postgresql.org/) database must be at least version
|
|
319
|
+
Your [postgres](https://www.postgresql.org/) database must be at least version 14. que-scheduler is tested against version 17.
|
|
321
320
|
|
|
322
|
-
The latest version of que-scheduler supports Ruby
|
|
321
|
+
The latest version of que-scheduler supports Ruby 4.0 and above, and Rails 8.0 and above.
|
|
322
|
+
que-scheduler versions below 8.0.0 work with Ruby 3.1 and Rails 6.0.
|
|
323
323
|
que-scheduler versions below 4.4.0 work with Ruby 2.7.
|
|
324
324
|
que-scheduler versions below 4.2.3 work with Ruby 2.5 and Ruby 2.6.
|
|
325
325
|
|
|
@@ -19,14 +19,12 @@ module Que
|
|
|
19
19
|
sig { params(enqueued_job: Que::Job).returns(Integer) }
|
|
20
20
|
def job_id(enqueued_job) = T.cast(job_attributes(enqueued_job).fetch(:job_id), Integer)
|
|
21
21
|
|
|
22
|
-
# Between Que versions the result of Que execute changed keys from strings to symbols.
|
|
23
|
-
# Here we wrap the concept and make sure either way produces symbols
|
|
24
22
|
sig do
|
|
25
23
|
params(str: String, args: T::Array[T.anything])
|
|
26
24
|
.returns(T::Array[T::Hash[Symbol, T.anything]])
|
|
27
25
|
end
|
|
28
26
|
def execute(str, args = [])
|
|
29
|
-
|
|
27
|
+
T.cast(Que.execute(str, args), T::Array[T::Hash[Symbol, T.anything]])
|
|
30
28
|
end
|
|
31
29
|
|
|
32
30
|
sig do
|
|
@@ -55,11 +53,6 @@ module Que
|
|
|
55
53
|
private def que_version_object
|
|
56
54
|
@que_version_object ||= T.must(Gem.loaded_specs["que"]).version
|
|
57
55
|
end
|
|
58
|
-
|
|
59
|
-
sig { params(array: T::Array[T.anything]).returns(T::Array[T::Hash[Symbol, T.anything]]) }
|
|
60
|
-
private def normalise_array_of_hashes(array)
|
|
61
|
-
array.map { |row| T.cast(row, T::Hash[T.any(String, Symbol), T.anything]).to_h.transform_keys(&:to_sym) }
|
|
62
|
-
end
|
|
63
56
|
end
|
|
64
57
|
end
|
|
65
58
|
end
|
|
@@ -8,7 +8,7 @@ require_relative "types"
|
|
|
8
8
|
# This is the definition of one scheduleable job in the que-scheduler config yml file.
|
|
9
9
|
module Que
|
|
10
10
|
module Scheduler
|
|
11
|
-
class DefinedJob < Hashie::Dash
|
|
11
|
+
class DefinedJob < Hashie::Dash
|
|
12
12
|
include Hashie::Extensions::Dash::PropertyTranslation
|
|
13
13
|
extend T::Sig
|
|
14
14
|
|
|
@@ -91,29 +91,9 @@ module Que
|
|
|
91
91
|
sig { params(options: T::Hash[Symbol, T.anything]).void }
|
|
92
92
|
private def validate_job_class_related(options)
|
|
93
93
|
# Only support known job engines
|
|
94
|
-
|
|
95
|
-
err_field(:job_class, options, "Job #{job_class} was not a supported job type")
|
|
96
|
-
end
|
|
94
|
+
return if Que::Scheduler::ToEnqueue.valid_job_class?(job_class)
|
|
97
95
|
|
|
98
|
-
|
|
99
|
-
# warning.
|
|
100
|
-
if queue &&
|
|
101
|
-
Que::Scheduler::ToEnqueue.active_job_defined? &&
|
|
102
|
-
job_class < ::ActiveJob::Base &&
|
|
103
|
-
T.must(Que::Scheduler::ToEnqueue.active_job_version) < Gem::Version.create("6.0.3")
|
|
104
|
-
puts <<~ERR
|
|
105
|
-
WARNING from que-scheduler....
|
|
106
|
-
Between versions 4.2.3 and 6.0.2 (inclusive) Rails did not support setting queue names
|
|
107
|
-
on que jobs with ActiveJob, so que-scheduler cannot support it.
|
|
108
|
-
See removed in Rails 4.2.3
|
|
109
|
-
https://github.com/rails/rails/pull/19498
|
|
110
|
-
And readded in Rails 6.0.3
|
|
111
|
-
https://github.com/rails/rails/pull/38635
|
|
112
|
-
|
|
113
|
-
Please remove all "queue" keys from ActiveJobs defined in the que-scheduler.yml config.
|
|
114
|
-
Specifically #{queue} for job #{name}.
|
|
115
|
-
ERR
|
|
116
|
-
end
|
|
96
|
+
err_field(:job_class, options, "Job #{job_class} was not a supported job type")
|
|
117
97
|
end
|
|
118
98
|
|
|
119
99
|
sig { params(field: Symbol, options: T::Hash[Symbol, T.anything], reason: String).returns(T.noreturn) }
|
|
@@ -42,21 +42,6 @@ module Que
|
|
|
42
42
|
Object.const_defined?(:ActiveJob)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
sig { returns(T.nilable(Gem::Version)) }
|
|
46
|
-
def active_job_version
|
|
47
|
-
Gem.loaded_specs["activejob"]&.version
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
sig { returns(T::Boolean) }
|
|
51
|
-
def active_job_version_supports_queues?
|
|
52
|
-
# Supporting queue name in ActiveJob was removed in Rails 4.2.3
|
|
53
|
-
# https://github.com/rails/rails/pull/19498
|
|
54
|
-
# and readded in Rails 6.0.3
|
|
55
|
-
# https://github.com/rails/rails/pull/38635
|
|
56
|
-
version = ToEnqueue.active_job_version
|
|
57
|
-
!version.nil? && version >= Gem::Version.create("6.0.3")
|
|
58
|
-
end
|
|
59
|
-
|
|
60
45
|
sig { params(job_class: Class).returns(T.nilable(T.class_of(ToEnqueue))) }
|
|
61
46
|
private def type_from_job_class(job_class)
|
|
62
47
|
types.each do |type, implementation|
|
|
@@ -90,7 +75,7 @@ module Que
|
|
|
90
75
|
args
|
|
91
76
|
)
|
|
92
77
|
|
|
93
|
-
return nil if job.nil? || !job
|
|
78
|
+
return nil if job.nil? || !job
|
|
94
79
|
|
|
95
80
|
# Now read the just inserted job back out of the DB to get the actual values that will
|
|
96
81
|
# be used when the job is worked.
|
|
@@ -107,7 +92,7 @@ module Que
|
|
|
107
92
|
def enqueue
|
|
108
93
|
job = enqueue_active_job
|
|
109
94
|
|
|
110
|
-
return nil if job.nil? || !job
|
|
95
|
+
return nil if job.nil? || !job
|
|
111
96
|
|
|
112
97
|
enqueued_values = calculate_enqueued_values(job)
|
|
113
98
|
EnqueuedJobType.new(enqueued_values)
|
|
@@ -121,9 +106,6 @@ module Que
|
|
|
121
106
|
|
|
122
107
|
scheduled_at = self.class.extract_scheduled_at(data[:scheduled_at])
|
|
123
108
|
|
|
124
|
-
# Rails didn't support queues for ActiveJob for a while
|
|
125
|
-
used_queue = data[:queue_name] if ToEnqueue.active_job_version_supports_queues?
|
|
126
|
-
|
|
127
109
|
# We can't get the priority out of the DB, as the returned `job` doesn't give us access
|
|
128
110
|
# to the underlying ActiveJob that was scheduled. We have no option but to assume
|
|
129
111
|
# it was what we told it to use. If no priority was specified, we must assume it was
|
|
@@ -132,7 +114,7 @@ module Que
|
|
|
132
114
|
|
|
133
115
|
{
|
|
134
116
|
args: data.fetch(:arguments),
|
|
135
|
-
queue:
|
|
117
|
+
queue: data[:queue_name],
|
|
136
118
|
priority: assume_used_priority,
|
|
137
119
|
run_at: scheduled_at,
|
|
138
120
|
job_class: job_class.to_s,
|
|
@@ -162,20 +144,10 @@ module Que
|
|
|
162
144
|
class << self
|
|
163
145
|
extend T::Sig
|
|
164
146
|
|
|
165
|
-
# ActiveJob scheduled_at
|
|
166
|
-
|
|
167
|
-
sig { params(scheduled_at: T.anything).returns(T.nilable(ActiveSupport::TimeWithZone)) }
|
|
147
|
+
# ActiveJob serialises scheduled_at as an ISO 8601 string; we want a Time
|
|
148
|
+
sig { params(scheduled_at: T.nilable(String)).returns(T.nilable(ActiveSupport::TimeWithZone)) }
|
|
168
149
|
def extract_scheduled_at(scheduled_at)
|
|
169
|
-
|
|
170
|
-
case scheduled_at
|
|
171
|
-
when Float
|
|
172
|
-
Que::Scheduler::TimeZone.time_zone.at(scheduled_at)
|
|
173
|
-
when String
|
|
174
|
-
Que::Scheduler::TimeZone.time_zone.parse(scheduled_at)
|
|
175
|
-
else
|
|
176
|
-
nil
|
|
177
|
-
end
|
|
178
|
-
# rubocop:enable Style/EmptyElse
|
|
150
|
+
scheduled_at && Que::Scheduler::TimeZone.time_zone.parse(scheduled_at)
|
|
179
151
|
end
|
|
180
152
|
end
|
|
181
153
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: que-scheduler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 8.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Harry Lascelles
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activesupport
|
|
@@ -16,14 +15,14 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
18
|
+
version: '8.0'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
25
|
+
version: '8.0'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: fugit
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -104,7 +103,7 @@ dependencies:
|
|
|
104
103
|
requirements:
|
|
105
104
|
- - ">="
|
|
106
105
|
- !ruby/object:Gem::Version
|
|
107
|
-
version: '
|
|
106
|
+
version: '8.0'
|
|
108
107
|
- - "<"
|
|
109
108
|
- !ruby/object:Gem::Version
|
|
110
109
|
version: '9.0'
|
|
@@ -114,7 +113,7 @@ dependencies:
|
|
|
114
113
|
requirements:
|
|
115
114
|
- - ">="
|
|
116
115
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
116
|
+
version: '8.0'
|
|
118
117
|
- - "<"
|
|
119
118
|
- !ruby/object:Gem::Version
|
|
120
119
|
version: '9.0'
|
|
@@ -132,20 +131,6 @@ dependencies:
|
|
|
132
131
|
- - ">="
|
|
133
132
|
- !ruby/object:Gem::Version
|
|
134
133
|
version: '0'
|
|
135
|
-
- !ruby/object:Gem::Dependency
|
|
136
|
-
name: base64
|
|
137
|
-
requirement: !ruby/object:Gem::Requirement
|
|
138
|
-
requirements:
|
|
139
|
-
- - ">="
|
|
140
|
-
- !ruby/object:Gem::Version
|
|
141
|
-
version: '0'
|
|
142
|
-
type: :development
|
|
143
|
-
prerelease: false
|
|
144
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
145
|
-
requirements:
|
|
146
|
-
- - ">="
|
|
147
|
-
- !ruby/object:Gem::Version
|
|
148
|
-
version: '0'
|
|
149
134
|
- !ruby/object:Gem::Dependency
|
|
150
135
|
name: climate_control
|
|
151
136
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -188,20 +173,6 @@ dependencies:
|
|
|
188
173
|
- - ">="
|
|
189
174
|
- !ruby/object:Gem::Version
|
|
190
175
|
version: '0'
|
|
191
|
-
- !ruby/object:Gem::Dependency
|
|
192
|
-
name: database_cleaner
|
|
193
|
-
requirement: !ruby/object:Gem::Requirement
|
|
194
|
-
requirements:
|
|
195
|
-
- - ">="
|
|
196
|
-
- !ruby/object:Gem::Version
|
|
197
|
-
version: '0'
|
|
198
|
-
type: :development
|
|
199
|
-
prerelease: false
|
|
200
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
201
|
-
requirements:
|
|
202
|
-
- - ">="
|
|
203
|
-
- !ruby/object:Gem::Version
|
|
204
|
-
version: '0'
|
|
205
176
|
- !ruby/object:Gem::Dependency
|
|
206
177
|
name: dememoize
|
|
207
178
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -230,20 +201,6 @@ dependencies:
|
|
|
230
201
|
- - ">="
|
|
231
202
|
- !ruby/object:Gem::Version
|
|
232
203
|
version: '0'
|
|
233
|
-
- !ruby/object:Gem::Dependency
|
|
234
|
-
name: mutex_m
|
|
235
|
-
requirement: !ruby/object:Gem::Requirement
|
|
236
|
-
requirements:
|
|
237
|
-
- - ">="
|
|
238
|
-
- !ruby/object:Gem::Version
|
|
239
|
-
version: '0'
|
|
240
|
-
type: :development
|
|
241
|
-
prerelease: false
|
|
242
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
243
|
-
requirements:
|
|
244
|
-
- - ">="
|
|
245
|
-
- !ruby/object:Gem::Version
|
|
246
|
-
version: '0'
|
|
247
204
|
- !ruby/object:Gem::Dependency
|
|
248
205
|
name: pg
|
|
249
206
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -478,7 +435,6 @@ metadata:
|
|
|
478
435
|
source_code_uri: https://github.com/hlascelles/que-scheduler/
|
|
479
436
|
bug_tracker_uri: https://github.com/hlascelles/que-scheduler/issues
|
|
480
437
|
rubygems_mfa_required: 'true'
|
|
481
|
-
post_install_message:
|
|
482
438
|
rdoc_options: []
|
|
483
439
|
require_paths:
|
|
484
440
|
- lib
|
|
@@ -486,15 +442,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
486
442
|
requirements:
|
|
487
443
|
- - ">="
|
|
488
444
|
- !ruby/object:Gem::Version
|
|
489
|
-
version: '
|
|
445
|
+
version: '4.0'
|
|
490
446
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
491
447
|
requirements:
|
|
492
448
|
- - ">="
|
|
493
449
|
- !ruby/object:Gem::Version
|
|
494
450
|
version: '0'
|
|
495
451
|
requirements: []
|
|
496
|
-
rubygems_version:
|
|
497
|
-
signing_key:
|
|
452
|
+
rubygems_version: 4.0.20
|
|
498
453
|
specification_version: 4
|
|
499
454
|
summary: A cron scheduler for Que
|
|
500
455
|
test_files: []
|