que-scheduler 3.2.2 → 3.2.3

Sign up to get free protection for your applications and to get access to all the features.
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