que-scheduler 4.0.2 → 4.0.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
2
  SHA256:
3
- metadata.gz: 198960bfd5797bdc85e0b320170350bb3a752e5c4ed90db31b86cf040b5dbd92
4
- data.tar.gz: 3f7128c8d159d5007ae42e72eca65059fd5e3f7cc9d60706dd72d7ea5002e686
3
+ metadata.gz: fe4e2dccf7d28c0918286aff2764b770b5f7ce4ddfe3383e4db74e3b21531bcc
4
+ data.tar.gz: a0b4db17f63d630acd1ef5e401d897ca5df2995c1cf45489367541671a5039f8
5
5
  SHA512:
6
- metadata.gz: db16c38be02a29d413687a3faaffd7749a88ca141bfcee724b0f1c410ddb4094ca6b92c73c878250d088cbaec5242dd8b755d3d3bf44dacd80dd921b710eb9bd
7
- data.tar.gz: fd46b785a759e3435491e54015d7ffff61bcf8ad5b0bd782a505838c148e9c778d6c994aaad71697cbe815bd47dffa22dcc3e35de8dc312eebbcc85a2752e26a
6
+ metadata.gz: 358a0ed1b4e31f5dc355f11bfab0dd8765852857684f752bf8ab99ca805690ed3eb7b502d6f36f2683c2fdc1429eaff8d5d4faa00983c9175a6669cf1ff5ea5f
7
+ data.tar.gz: 29b612a226076216788cb914fbe7064c6840597962f718fd3635d85c23e4085aa2c497ec521e661c621631b7b36de9aae080538bc6b37ac93e489fad035ba583
data/README.md CHANGED
@@ -162,6 +162,14 @@ Que::Scheduler.configure do |config|
162
162
  # It *must* be the "highest throughput" queue - do not work the scheduler on a "long
163
163
  # running jobs" queue. It is very unlikely you will want to change this.
164
164
  config.que_scheduler_queue = ENV.fetch("QUE_SCHEDULER_QUEUE", "" or "default")
165
+
166
+ # If que-scheduler is being used with Rails, then it will inherit the time zone from that
167
+ # framework, and you can leave the value as nil as shown below. However, if you are not using
168
+ # Rails, you may need to set the time zone here. If que-scheduler cannot determine the time zone
169
+ # it will yield an error prompting you for action.
170
+ # If you need to set a value, use the string representation:
171
+ # eg: config.time_zone = "Europe/London"
172
+ config.time_zone = nil
165
173
  end
166
174
  ```
167
175
 
@@ -1,6 +1,7 @@
1
1
  require "que/scheduler/version"
2
2
  require "que/scheduler/version_support"
3
3
  require "que/scheduler/configuration"
4
+ require "que/scheduler/time_zone"
4
5
  require "que/scheduler/scheduler_job"
5
6
  require "que/scheduler/db"
6
7
  require "que/scheduler/audit"
@@ -8,6 +8,7 @@ module Que
8
8
  attr_accessor :schedule
9
9
  attr_accessor :transaction_adapter
10
10
  attr_accessor :que_scheduler_queue
11
+ attr_accessor :time_zone
11
12
  end
12
13
 
13
14
  class << self
@@ -26,6 +27,7 @@ module Que
26
27
  config.que_scheduler_queue =
27
28
  ENV.fetch("QUE_SCHEDULER_QUEUE", Que::Scheduler::VersionSupport.default_scheduler_queue)
28
29
  config.schedule = nil
30
+ config.time_zone = nil
29
31
  end
30
32
  end
31
33
  end
@@ -89,7 +89,7 @@ module Que
89
89
  Que::Scheduler::ToEnqueue.active_job_sufficient_version? &&
90
90
  job_class < ::ActiveJob::Base &&
91
91
  Que::Scheduler::ToEnqueue.active_job_version < Gem::Version.create("6.0.3")
92
- puts <<-ERR
92
+ puts <<~ERR
93
93
  WARNING from que-scheduler....
94
94
  Between versions 4.2.3 and 6.0.2 (inclusive) Rails did not support setting queue names
95
95
  on que jobs with ActiveJob, so que-scheduler cannot support it.
@@ -8,7 +8,7 @@ module Que
8
8
  class QueSchedulerAuditClearDownJob < Que::Job
9
9
  class << self
10
10
  def build_sql(table_name)
11
- <<-SQL
11
+ <<~SQL
12
12
  WITH deleted AS (
13
13
  DELETE FROM #{table_name}
14
14
  WHERE scheduler_job_id <= (
@@ -41,7 +41,8 @@ module Que
41
41
  end.to_h
42
42
  end
43
43
 
44
- def hash_item_to_defined_job(name, defined_job_hash)
44
+ def hash_item_to_defined_job(name, defined_job_hash_in)
45
+ defined_job_hash = defined_job_hash_in.stringify_keys
45
46
  # Que stores arguments as a json array. If the args we have to provide are already an
46
47
  # array we can can simply pass them through. If it is a single non-nil value, then we make
47
48
  # an array with one item which is that value (this includes if it is a hash). It could
@@ -22,7 +22,8 @@ module Que
22
22
  else
23
23
  options = options.symbolize_keys
24
24
  {
25
- last_run_time: Time.zone.parse(options.fetch(:last_run_time)),
25
+ last_run_time:
26
+ Que::Scheduler::TimeZone.time_zone.parse(options.fetch(:last_run_time)),
26
27
  job_dictionary: options.fetch(:job_dictionary),
27
28
  }
28
29
  end
@@ -19,7 +19,7 @@ module Que
19
19
  sync_err =
20
20
  if Que::Scheduler::VersionSupport.running_synchronously? && db_version.zero?
21
21
  code = Que::Scheduler::VersionSupport.running_synchronously_code?
22
- <<-ERR_SYNC
22
+ <<~ERR_SYNC
23
23
  You currently have Que to run in synchronous mode using
24
24
  #{code}, so it is most likely this error
25
25
  has happened during an initial migration. You should disable synchronous mode and
@@ -0,0 +1,61 @@
1
+ module Que
2
+ module Scheduler
3
+ module TimeZone
4
+ BOTH_CONFIG_AND_TIME_DOT_ZONE_SET = <<~ERR.freeze
5
+ The que-scheduler config for time_zone has been set to a non-nil value, but
6
+ it appears to also have been set on Time.zone (possibly by Rails). Both of these
7
+ cannot be non-nil.
8
+ You should remove the time_zone config from the que-scheduler config block.
9
+ ERR
10
+
11
+ TIME_ZONE_COULD_NOT_BE_DETERMINED = <<~ERR.freeze
12
+ It appears Time.zone is nil. This prevents proper functioning of que-scheduler.
13
+
14
+ Resolving this issue depends on your application setup.
15
+
16
+ 1) If you are using Rails, set the standard time_zone config
17
+ eg:
18
+ ```
19
+ # In application.rb
20
+ config.time_zone = "Europe/London"
21
+ ```
22
+
23
+ 2) If you are not using Rails, set your time zone in the que-scheduler config:
24
+ eg:
25
+ ```
26
+ Que::Scheduler.configure do |config|
27
+ config.time_zone = "Europe/London"
28
+ end
29
+ ```
30
+ ERR
31
+
32
+ TIME_ZONE_CONFIG_IS_NOT_VALID = <<~ERR.freeze
33
+ The que-scheduler config for time_zone has been set to a non-nil value, but that value
34
+ does not yield a real time zone when passed to ActiveSupport::TimeZone.new
35
+ ERR
36
+
37
+ class << self
38
+ def time_zone
39
+ @time_zone ||=
40
+ begin
41
+ time_dot_zone = Time.zone
42
+ if time_dot_zone.present?
43
+ if Que::Scheduler.configuration.time_zone.present?
44
+ raise BOTH_CONFIG_AND_TIME_DOT_ZONE_SET
45
+ end
46
+
47
+ time_dot_zone
48
+ elsif Que::Scheduler.configuration.time_zone
49
+ new_tz = ActiveSupport::TimeZone.new(Que::Scheduler.configuration.time_zone)
50
+ raise TIME_ZONE_CONFIG_IS_NOT_VALID unless new_tz
51
+
52
+ new_tz
53
+ else
54
+ raise TIME_ZONE_COULD_NOT_BE_DETERMINED
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -105,7 +105,13 @@ module Que
105
105
  scheduled_at =
106
106
  begin
107
107
  scheduled_at_float = data[:scheduled_at]
108
- scheduled_at_float ? Time.zone.at(scheduled_at_float) : nil
108
+ # rubocop:disable Style/EmptyElse
109
+ if scheduled_at_float
110
+ Que::Scheduler::TimeZone.time_zone.at(scheduled_at_float)
111
+ else
112
+ nil
113
+ end
114
+ # rubocop:enable Style/EmptyElse
109
115
  end
110
116
 
111
117
  # Rails didn't support queues for ActiveJob for a while
@@ -1,5 +1,5 @@
1
1
  module Que
2
2
  module Scheduler
3
- VERSION = "4.0.2".freeze
3
+ VERSION = "4.0.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: 4.0.2
4
+ version: 4.0.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: 2020-11-29 00:00:00.000000000 Z
11
+ date: 2021-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -355,6 +355,7 @@ files:
355
355
  - lib/que/scheduler/scheduler_job.rb
356
356
  - lib/que/scheduler/scheduler_job_args.rb
357
357
  - lib/que/scheduler/state_checks.rb
358
+ - lib/que/scheduler/time_zone.rb
358
359
  - lib/que/scheduler/to_enqueue.rb
359
360
  - lib/que/scheduler/version.rb
360
361
  - lib/que/scheduler/version_support.rb