que-scheduler 3.2.3 → 3.2.4

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
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