say_when 2.1.1 → 2.2.1

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: 8ca076d2e879f88cc05052565164e4d2c0b856ae
4
- data.tar.gz: 0e5b360cad802e12fdab9d86fa77087069374ccc
2
+ SHA256:
3
+ metadata.gz: 004f8130b1969d9e862595417d9794f7d64ed16afbdf34f40302334b8a942aa9
4
+ data.tar.gz: e91ef4b230b9c2b846be3c383dc8a2ed05fb818cf1545f9eec46be47da91fd40
5
5
  SHA512:
6
- metadata.gz: 38f5109ee6927dea6cf452cbee4fe995723f6dc851e76d654609a02085cba1d91e395c62abc7dee65f6bb2cf264ed550ea96a50dd8832edefecb5826a51222cc
7
- data.tar.gz: 4de6d52afcfdcf86312bb739b3d6b15729dc5ba035997edfda7f5a2565e4ee6069c3e433b0e366e11e9f0fbb97d018f3e2371bb30cbe765e1a80651654c11311
6
+ metadata.gz: a00b44161859bc4f2c526e724bee7037dcdead017e08c183c80ca0cb30f13ec8eee631f69d6734bfcc7ecf0dee32fe388cec1852d2b31892d17ad210ee00789d
7
+ data.tar.gz: 196771d5723fbf2b077ad93fa6ab7e2c8b5923d55090523d38e72e860ba1cce0d3b71938afbf3ce409a260e0022604394401c5db7fb6dc91113cd70d3468af39
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  require 'concurrent'
4
2
  require 'logger'
5
3
  require 'say_when/poller/base_poller'
@@ -11,20 +9,19 @@ module SayWhen
11
9
 
12
10
  def initialize(tick = nil)
13
11
  @tick_length = tick.to_i if tick
14
- start
15
12
  end
16
13
 
17
14
  def start
18
- @tick_timer = Concurrent::TimerTask.new(execution_interval: tick_length) do
15
+ @tick_timer ||= Concurrent::TimerTask.new(execution_interval: tick_length) do
19
16
  process_jobs
20
17
  end.tap(&:execute)
21
18
  end
22
19
 
23
20
  def stop
24
- if @tick_timer
25
- @tick_timer.shutdown
26
- @tick_timer = nil
27
- end
21
+ return unless @tick_timer
22
+
23
+ @tick_timer.shutdown
24
+ @tick_timer = nil
28
25
  end
29
26
  end
30
27
  end
@@ -47,14 +47,14 @@ module SayWhen
47
47
  serialize :trigger_options
48
48
  serialize :data
49
49
 
50
- belongs_to :scheduled, polymorphic: true
51
- has_many :job_executions, class_name: 'SayWhen::Storage::ActiveRecordStrategy::JobExecution'
50
+ belongs_to :scheduled, polymorphic: true, optional: true
51
+ has_many :job_executions, class_name: 'SayWhen::Storage::ActiveRecordStrategy::JobExecution'
52
52
 
53
53
  before_create :set_defaults
54
54
 
55
55
  def self.job_create(job)
56
56
  if existing_job = find_named_job(job[:group], job[:name])
57
- existing_job.tap { |j| j.update_attributes(job) }
57
+ existing_job.tap { |j| j.update(job) }
58
58
  else
59
59
  create(job)
60
60
  end
@@ -71,15 +71,15 @@ module SayWhen
71
71
  check_connection
72
72
  hide_logging do
73
73
  SayWhen::Storage::ActiveRecordStrategy::Job.transaction do
74
- # select and lock the next job that needs executin' (status waiting, and after no_later_than)
75
- next_job = where(status: STATE_WAITING).
76
- where('next_fire_at < ?', no_later_than).
77
- order('next_fire_at ASC').
78
- lock(true).
79
- first
74
+ # select and lock the next job that needs executing (status waiting, and after no_later_than)
75
+ next_job = where(status: STATE_WAITING)
76
+ .where('next_fire_at < ?', no_later_than)
77
+ .order(next_fire_at: 'asc')
78
+ .lock(true)
79
+ .first
80
80
 
81
81
  # set status to acquired to take it out of rotation
82
- next_job.update_attribute(:status, STATE_ACQUIRED) if next_job
82
+ next_job&.update_attribute(:status, STATE_ACQUIRED)
83
83
  end
84
84
  end
85
85
  next_job
@@ -87,8 +87,9 @@ module SayWhen
87
87
 
88
88
  def self.reset_acquired(older_than_seconds)
89
89
  return unless older_than_seconds.to_i > 0
90
+
90
91
  older_than = (Time.now - older_than_seconds.to_i)
91
- where('status = ? and updated_at < ?', STATE_ACQUIRED, older_than).update_all("status = '#{STATE_WAITING}'")
92
+ where('status = ? and updated_at < ?', STATE_ACQUIRED, older_than).update_all(status: STATE_WAITING)
92
93
  end
93
94
 
94
95
  def self.check_connection
@@ -100,10 +101,10 @@ module SayWhen
100
101
  end
101
102
 
102
103
  def self.hide_logging
103
- old_logger = nil
104
+ @_null_logger ||= Logger.new(IO::NULL)
105
+ old_logger = ::ActiveRecord::Base.logger
104
106
  begin
105
- old_logger = ::ActiveRecord::Base.logger
106
- ::ActiveRecord::Base.logger = nil
107
+ ::ActiveRecord::Base.logger = @_null_logger
107
108
  yield
108
109
  ensure
109
110
  ::ActiveRecord::Base.logger = old_logger
@@ -112,21 +113,21 @@ module SayWhen
112
113
 
113
114
  def set_defaults
114
115
  self.status = STATE_WAITING
115
- self.next_fire_at = self.trigger.next_fire_at
116
+ self.next_fire_at = trigger.next_fire_at
116
117
  end
117
118
 
118
- def fired(fired_at=Time.now)
119
- self.class.transaction {
119
+ def fired(fired_at = Time.now)
120
+ self.class.transaction do
120
121
  super
121
- self.save!
122
- }
122
+ save!
123
+ end
123
124
  end
124
125
 
125
126
  def release
126
- self.class.transaction {
127
+ self.class.transaction do
127
128
  super
128
- self.save!
129
- }
129
+ save!
130
+ end
130
131
  end
131
132
 
132
133
  # default impl with some error handling and result recording
@@ -136,11 +137,11 @@ module SayWhen
136
137
  result = execute_with_stored_result
137
138
  else
138
139
  begin
139
- result = self.execute_job(data)
140
- SayWhen.logger.info("complete - job: #{self.inspect}, result: #{result}")
141
- rescue Object => ex
142
- result = "#{ex.class.name}: #{ex.message}\n\t#{ex.backtrace.join("\n\t")}"
143
- SayWhen.logger.error("error - job: #{self.inspect}, exception: #{result}")
140
+ result = execute_job(data)
141
+ SayWhen.logger.info("complete - job: #{inspect}, result: #{result}")
142
+ rescue Object => e
143
+ result = "#{e.class.name}: #{e.message}\n\t#{e.backtrace.join("\n\t")}"
144
+ SayWhen.logger.error("error - job: #{inspect}, exception: #{result}")
144
145
  end
145
146
  end
146
147
  result
@@ -150,10 +151,10 @@ module SayWhen
150
151
  execution = JobExecution.create(job: self, status: STATE_EXECUTING, start_at: Time.now)
151
152
 
152
153
  begin
153
- execution.result = self.execute_job(data)
154
+ execution.result = execute_job(data)
154
155
  execution.status = 'complete'
155
- rescue Object => ex
156
- execution.result = "#{ex.class.name}: #{ex.message}\n\t#{ex.backtrace.join("\n\t")}"
156
+ rescue Object => e
157
+ execution.result = "#{e.class.name}: #{e.message}\n\t#{e.backtrace.join("\n\t")}"
157
158
  execution.status = 'error'
158
159
  end
159
160
 
@@ -164,7 +165,7 @@ module SayWhen
164
165
  end
165
166
  end
166
167
 
167
- module Acts #:nodoc:
168
+ module Acts # :nodoc:
168
169
  extend ActiveSupport::Concern
169
170
 
170
171
  module ClassMethods
@@ -172,9 +173,9 @@ module SayWhen
172
173
  include SayWhen::Storage::ActiveRecordStrategy::Acts::InstanceMethods
173
174
 
174
175
  has_many :scheduled_jobs,
175
- as: :scheduled,
176
- class_name: 'SayWhen::Storage::ActiveRecordStrategy::Job',
177
- dependent: :destroy
176
+ as: :scheduled,
177
+ class_name: 'SayWhen::Storage::ActiveRecordStrategy::Job',
178
+ dependent: :destroy
178
179
  end
179
180
  end
180
181
 
@@ -214,6 +215,4 @@ module SayWhen
214
215
  end
215
216
 
216
217
  aas = SayWhen::Storage::ActiveRecordStrategy::Acts
217
- unless ActiveRecord::Base.include?(aas)
218
- ActiveRecord::Base.send(:include, aas)
219
- end
218
+ ActiveRecord::Base.send(:include, aas) unless ActiveRecord::Base.include?(aas)
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module SayWhen
4
- VERSION = '2.1.1'
4
+ VERSION = '2.2.1'
5
5
  end
@@ -85,7 +85,7 @@ describe SayWhen::Storage::ActiveRecordStrategy do
85
85
  it 'resets acquired jobs' do
86
86
  old = 2.hours.ago
87
87
  j = strategy.create(valid_attributes)
88
- j.update_attributes(status: 'acquired', updated_at: old, created_at: old)
88
+ j.update(status: 'acquired', updated_at: old, created_at: old)
89
89
 
90
90
  j.status.must_equal 'acquired'
91
91
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: say_when
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kuklewicz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-21 00:00:00.000000000 Z
11
+ date: 2022-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -270,8 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
270
  - !ruby/object:Gem::Version
271
271
  version: '0'
272
272
  requirements: []
273
- rubyforge_project:
274
- rubygems_version: 2.5.1
273
+ rubygems_version: 3.1.4
275
274
  signing_key:
276
275
  specification_version: 4
277
276
  summary: Scheduling system for programmatically defined and stored jobs.