que-scheduler 3.2.3 → 3.2.4

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
2
  SHA256:
3
- metadata.gz: 15498dda40836c4e4f447f78a2cb5f259df54a2ba6be22d24c4343a3fffad2d1
4
- data.tar.gz: b23b41708e1dd364fdd7a101ecdb7a5b6899ea9fad78fe6ca2ff3470db0f08dc
3
+ metadata.gz: 38a2b7875c377e5464a1c7765a97fbeb7f1619d6ec9d2425278d95faa33b60ee
4
+ data.tar.gz: 2770026bd29d9e08dd7bf45fa82814e2cec5a7bbf18e656e6003854e5f839822
5
5
  SHA512:
6
- metadata.gz: 28d70ce26b05e89c0b72ac8ca20b5e730891e032a5bf9a5f3d9e187e145f5f9d5e5ae357bdee1ad752ee11086ef1c9c7188c511adda85bd4ba9abb34d9cc54be
7
- data.tar.gz: 7a53a1bd6d4c56c105172ccb2e9a2aa70ab862691bda8473b9476444c3afd4a382f1b0177daa325583cda54719c48ff99f2409bff6f34a29cb64d9cb7029d763
6
+ metadata.gz: 4a14e16dfe2cb57b90249d3b16747ce92a7a6716bdd79627648df3d8059e1dd0ee86181ee558386ff68a987a4929e90fe19148a26752ee65f58d63be141e962a
7
+ data.tar.gz: 0674f778f0e1bd9c38927426a9699cb20ff4e8a7b08a8b96807be66cb252295460779f660357b83e9a0893a8147c2e11627ff81e675b0840c602b6642df098ea
@@ -24,11 +24,11 @@ module Que
24
24
  def append(scheduler_job_id, executed_at, enqueued_jobs)
25
25
  ::Que.execute(INSERT_AUDIT, [scheduler_job_id, executed_at])
26
26
  enqueued_jobs.each do |j|
27
- attrs = j.attrs
27
+ attrs = Que::Scheduler::VersionSupport.job_attributes(j)
28
28
  inserted = ::Que.execute(
29
29
  INSERT_AUDIT_ENQUEUED,
30
30
  [scheduler_job_id] +
31
- attrs.values_at('job_class', 'queue', 'priority', 'args', 'job_id', 'run_at')
31
+ attrs.values_at(:job_class, :queue, :priority, :args, :job_id, :run_at)
32
32
  )
33
33
  raise "Cannot save audit row #{scheduler_job_id} #{executed_at} #{j}" if inserted.empty?
34
34
  end
@@ -4,6 +4,7 @@ require_relative 'schedule'
4
4
  require_relative 'enqueueing_calculator'
5
5
  require_relative 'scheduler_job_args'
6
6
  require_relative 'state_checks'
7
+ require_relative 'version_support'
7
8
 
8
9
  # The main job that runs every minute, determining what needs to be enqueued, enqueues the required
9
10
  # jobs, then re-enqueues itself.
@@ -13,7 +14,7 @@ module Que
13
14
  SCHEDULER_FREQUENCY = 60
14
15
 
15
16
  # Always highest possible priority.
16
- @priority = 0
17
+ Que::Scheduler::VersionSupport.set_priority(self, 0)
17
18
 
18
19
  def run(options = nil)
19
20
  Que::Scheduler::Db.transaction do
@@ -53,7 +54,7 @@ module Que
53
54
 
54
55
  def check_enqueued_job(enqueued_job, job_class, args, logs)
55
56
  if enqueued_job.is_a?(Que::Job)
56
- job_id = enqueued_job.attrs.fetch('job_id')
57
+ job_id = Que::Scheduler::VersionSupport.job_attributes(enqueued_job).fetch(:job_id)
57
58
  logs << "que-scheduler enqueueing #{job_class} #{job_id} with args: #{args}"
58
59
  enqueued_job
59
60
  else
@@ -64,13 +65,23 @@ module Que
64
65
  end
65
66
 
66
67
  def enqueue_self_again(scheduler_job_args, last_full_execution, job_dictionary, enqueued_jobs)
68
+ # Log last run...
69
+ job_id = Que::Scheduler::VersionSupport.job_attributes(self).fetch(:job_id)
70
+ Audit.append(job_id, scheduler_job_args.as_time, enqueued_jobs)
71
+
72
+ # And rerun...
67
73
  next_run_at = scheduler_job_args.as_time.beginning_of_minute + SCHEDULER_FREQUENCY
68
- SchedulerJob.enqueue(
74
+ enqueued_job = SchedulerJob.enqueue(
69
75
  last_run_time: last_full_execution.iso8601,
70
76
  job_dictionary: job_dictionary,
71
77
  run_at: next_run_at
72
78
  )
73
- Audit.append(attrs[:job_id], scheduler_job_args.as_time, enqueued_jobs)
79
+
80
+ # rubocop:disable Style/GuardClause This reads better as a conditional
81
+ unless check_enqueued_job(enqueued_job, SchedulerJob, {}, [])
82
+ raise 'SchedulerJob could not self-schedule. Has `.enqueue` been monkey patched?'
83
+ end
84
+ # rubocop:enable Style/GuardClause
74
85
  end
75
86
  end
76
87
  end
@@ -1,5 +1,5 @@
1
1
  module Que
2
2
  module Scheduler
3
- VERSION = '3.2.3'.freeze
3
+ VERSION = '3.2.4'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,19 @@
1
+ require 'que'
2
+
3
+ # The purpose of this module is to centralise the differences when supporting both que 0.x and
4
+ # 1.x with the same gem.
5
+ module Que
6
+ module Scheduler
7
+ module VersionSupport
8
+ class << self
9
+ def set_priority(context, priority)
10
+ context.instance_variable_set('@priority', priority)
11
+ end
12
+
13
+ def job_attributes(enqueued_job)
14
+ enqueued_job.attrs.transform_keys(&:to_sym)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ 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.3
4
+ version: 3.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Lascelles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-06 00:00:00.000000000 Z
11
+ date: 2019-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -339,6 +339,7 @@ files:
339
339
  - lib/que/scheduler/scheduler_job_args.rb
340
340
  - lib/que/scheduler/state_checks.rb
341
341
  - lib/que/scheduler/version.rb
342
+ - lib/que/scheduler/version_support.rb
342
343
  homepage: https://github.com/hlascelles/que-scheduler
343
344
  licenses:
344
345
  - MIT
@@ -364,7 +365,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
364
365
  version: '0'
365
366
  requirements: []
366
367
  rubyforge_project:
367
- rubygems_version: 2.7.6
368
+ rubygems_version: 2.7.6.2
368
369
  signing_key:
369
370
  specification_version: 4
370
371
  summary: A cron scheduler for Que