que-scheduler 3.2.2 → 3.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2b504deabde4b9902e95944af14f2bd0820c6e7e
4
- data.tar.gz: 9cecf4a0dcf0f6497096d0dfe5824c1452447c53
2
+ SHA256:
3
+ metadata.gz: 15498dda40836c4e4f447f78a2cb5f259df54a2ba6be22d24c4343a3fffad2d1
4
+ data.tar.gz: b23b41708e1dd364fdd7a101ecdb7a5b6899ea9fad78fe6ca2ff3470db0f08dc
5
5
  SHA512:
6
- metadata.gz: f2ebae7e9453682a6ed07f84b46523e1a617df42d9ed1aca8f60abb314080a5285067c56bcbaafa6d908d5adf26e90ba810afa90d31c7ac9a5c8a6f36ab8d009
7
- data.tar.gz: 3b6425695eaaa1519a8cb4ec579bb40e9eb5a3a4514ffc5bc74218f884f43cb0ee884b2c329753107f56fe1f0d0743bca7a975a5c41e175e9cb86da9e0c5fdd3
6
+ metadata.gz: 28d70ce26b05e89c0b72ac8ca20b5e730891e032a5bf9a5f3d9e187e145f5f9d5e5ae357bdee1ad752ee11086ef1c9c7188c511adda85bd4ba9abb34d9cc54be
7
+ data.tar.gz: 7a53a1bd6d4c56c105172ccb2e9a2aa70ab862691bda8473b9476444c3afd4a382f1b0177daa325583cda54719c48ff99f2409bff6f34a29cb64d9cb7029d763
data/README.md CHANGED
@@ -2,7 +2,7 @@ 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://travis-ci.org/hlascelles/que-scheduler.svg?branch=master)](https://travis-ci.org/hlascelles/que-scheduler)
5
+ [![Build status](https://gitlab.com/hlascelles/que-scheduler/badges/master/pipeline.svg)](https://gitlab.com/hlascelles/que-scheduler/pipelines)
6
6
  [![Coverage Status](https://coveralls.io/repos/github/hlascelles/que-scheduler/badge.svg?branch=master)](https://coveralls.io/github/hlascelles/que-scheduler?branch=master)
7
7
  [![Code Climate Maintainability](https://api.codeclimate.com/v1/badges/710d2fc5202f95d76e8a/maintainability)](https://codeclimate.com/github/hlascelles/que-scheduler/maintainability)
8
8
 
@@ -86,11 +86,13 @@ all_options_job:
86
86
  priority: 25
87
87
  args: ['open']
88
88
 
89
- # Ensure you never miss a job, even after downtime
89
+ # Ensure you never miss a job, even after downtime, by using "schedule_type: every_event"
90
90
  DailyBatchReport:
91
91
  cron: "0 3 * * *"
92
- # This job will be run every day. If workers are offline for several days, then the backlog
93
- # will all be scheduled when they are restored, each with that event's timestamp as the first arg.
92
+ # This job will be run every day at 03:00 as normal.
93
+ # However, the "schedule_type: every_event" setting below will ensure that if workers are offline
94
+ # for any amount of time then the bcaklog will always be enqueued on recovery.
95
+ # See "Schedule types" below for more information.
94
96
  schedule_type: every_event
95
97
  ```
96
98
 
@@ -104,11 +106,15 @@ A job can have a `schedule_type` assigned to it. Valid values are:
104
106
  the way resque-scheduler would perform if it were taken down for some time.
105
107
  1. `every_event` - Every cron match will result in a job being scheduled. If multiple cron times go
106
108
  by during an extended period of downtime, then a job will be scheduled for every one missed on
107
- startup. This `schedule_type` should be used for daily batch jobs that need to know which day
109
+ startup. This `schedule_type` should be used for regular batch jobs that need to know which time
108
110
  they are running a batch for. The job will always be scheduled with an ISO8601 string of the cron
109
111
  that matched as the first argument.
110
-
111
- This feature ensures that jobs which *must run* for a certain cron match will always eventually
112
+
113
+ An example would be an eventing DailyReportJob which summarises a day's sales. If no jobs run for
114
+ a few days due to a technical failure, then on recovery a report would still be needed for each
115
+ individual day. "schedule_type: every_event" would ensure this happens.
116
+
117
+ This feature ensures that jobs which *must run* for a certain cron match will always eventually
112
118
  execute, even after a total system crash, or even a DB backup restore.
113
119
 
114
120
  ## Gem configuration
@@ -28,9 +28,17 @@ module Que
28
28
 
29
29
  def db_version
30
30
  return Que.execute(TABLE_COMMENT).first[:description].to_i if audit_table_exists?
31
+
31
32
  Que::Scheduler::Db.count_schedulers.zero? ? 0 : 1
32
33
  end
33
34
 
35
+ def audit_table_exists?
36
+ result = Que.execute(<<-SQL)
37
+ SELECT * FROM information_schema.tables WHERE table_name = '#{AUDIT_TABLE_NAME}';
38
+ SQL
39
+ result.any?
40
+ end
41
+
34
42
  private
35
43
 
36
44
  def migrate_up(current, version)
@@ -46,17 +54,11 @@ module Que
46
54
  def execute_step(number, direction)
47
55
  Que.execute(IO.read("#{__dir__}/migrations/#{number}/#{direction}.sql"))
48
56
  return unless audit_table_exists?
57
+
49
58
  Que.execute(
50
59
  "COMMENT ON TABLE que_scheduler_audit IS '#{direction == :up ? number : number - 1}'"
51
60
  )
52
61
  end
53
-
54
- def audit_table_exists?
55
- result = Que.execute(<<-SQL)
56
- SELECT * FROM information_schema.tables WHERE table_name = '#{AUDIT_TABLE_NAME}';
57
- SQL
58
- result.any?
59
- end
60
62
  end
61
63
  end
62
64
  end
@@ -16,6 +16,7 @@ module Que
16
16
  def assert_db_migrated
17
17
  db_version = Que::Scheduler::Migrations.db_version
18
18
  return if db_version == Que::Scheduler::Migrations::MAX_VERSION
19
+
19
20
  raise(<<-ERR)
20
21
  The que-scheduler db migration state was found to be #{db_version}. It should be #{Que::Scheduler::Migrations::MAX_VERSION}.
21
22
 
@@ -47,6 +48,7 @@ module Que
47
48
  def assert_one_scheduler_job
48
49
  schedulers = Que::Scheduler::Db.count_schedulers
49
50
  return if schedulers == 1
51
+
50
52
  raise(<<-ERR)
51
53
  Only one #{Que::Scheduler::SchedulerJob.name} should be enqueued. #{schedulers} were found.
52
54
 
@@ -1,5 +1,5 @@
1
1
  module Que
2
2
  module Scheduler
3
- VERSION = '3.2.2'.freeze
3
+ VERSION = '3.2.3'.freeze
4
4
  end
5
5
  end
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: 3.2.2
4
+ version: 3.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Lascelles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-01 00:00:00.000000000 Z
11
+ date: 2019-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -45,6 +45,9 @@ dependencies:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.1.8
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,6 +55,9 @@ dependencies:
52
55
  - - "~>"
53
56
  - !ruby/object:Gem::Version
54
57
  version: '1.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.1.8
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: hashie
57
63
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +114,6 @@ dependencies:
108
114
  - - ">="
109
115
  - !ruby/object:Gem::Version
110
116
  version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: bundler
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
117
  - !ruby/object:Gem::Dependency
126
118
  name: combustion
127
119
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +198,20 @@ dependencies:
206
198
  - - ">="
207
199
  - !ruby/object:Gem::Version
208
200
  version: '0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: psych
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 3.0.0
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 3.0.0
209
215
  - !ruby/object:Gem::Dependency
210
216
  name: rake
211
217
  requirement: !ruby/object:Gem::Requirement
@@ -254,14 +260,14 @@ dependencies:
254
260
  requirements:
255
261
  - - "~>"
256
262
  - !ruby/object:Gem::Version
257
- version: 0.54.0
263
+ version: '0.61'
258
264
  type: :development
259
265
  prerelease: false
260
266
  version_requirements: !ruby/object:Gem::Requirement
261
267
  requirements:
262
268
  - - "~>"
263
269
  - !ruby/object:Gem::Version
264
- version: 0.54.0
270
+ version: '0.61'
265
271
  - !ruby/object:Gem::Dependency
266
272
  name: sqlite3
267
273
  requirement: !ruby/object:Gem::Requirement
@@ -358,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
358
364
  version: '0'
359
365
  requirements: []
360
366
  rubyforge_project:
361
- rubygems_version: 2.6.14.1
367
+ rubygems_version: 2.7.6
362
368
  signing_key:
363
369
  specification_version: 4
364
370
  summary: A cron scheduler for Que