postburner 0.6.1 → 0.6.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: ca9bed4afd8b585d14934b4ba09b20c58109d8de39d5300d135069e2723c3aba
4
- data.tar.gz: 5ae5f4a07e53ac69b4d4b795f3b8c8bdf5b9a087e1a8513f6fed03cb47e48210
3
+ metadata.gz: 0cd364ebe0fbc9c2a58ccf7adaf27fd5d2dc8ea20b237b0588bf0166d9246097
4
+ data.tar.gz: 6fb7546229e800d08f7ce8cfbc064738c5b674154cf974abd03a8a2fe9256402
5
5
  SHA512:
6
- metadata.gz: c741884d62b1b71b7c8ce928baff5fef35054c58962f530ee06764b4947477ca394712300256e98409187494092c7164a5f8490482e54a19d0f1776b8465f783
7
- data.tar.gz: 193a2e625139d0a441503afc15d64888eb25234d0ae81ca320a319506130e8eb1c960141d60b97066633f6a777ab47fe21d49d42bc448497b4225e8c78924051
6
+ metadata.gz: 54ce781b47f35920855a4f2491038b81bbe6c658f45fe7b001d2dc3fb2d31a13a87bc67e79a53a3832dfd2b1fb7a0c6cc8e91f686c6264e5c3a52c2513e6cbc9
7
+ data.tar.gz: d5f865f2a214709e4bcd4da8c04a45840202344ad3e2d9d94dd937f604fd21ca624c18fa284d3ce58e804ce405bb5c2c9bd53921c3706015f492202fe4c1e474
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.6.4 - 2022-05-21
4
+
5
+ ### Fixed
6
+ - add rails 7 to gemspec.
7
+
8
+ ## v0.6.3 - 2021-11-02
9
+
10
+ ### Fixed
11
+ - fix #remove! to allow removal even if no beanstalkd job present.
12
+
13
+ ## v0.6.2 - 2021-11-01
14
+
15
+ ### Fixed
16
+ - add #requeue method.
17
+ - check if AlreadyProcessed.
18
+
3
19
  ## v0.6.1 - 2021-11-01
4
20
 
5
21
  ### Updated
@@ -31,15 +31,19 @@ module Postburner
31
31
  def queue!(options={})
32
32
  return if self.queued_at.present? && self.bkid.present?
33
33
  raise ActiveRecord::RecordInvalid, "Can't queue unless valid." unless self.valid?
34
+ raise AlreadyProcessed, "Processed at #{self.processed_at}" if self.processed_at
35
+
34
36
  at = options.delete(:at)
37
+ now = Time.zone.now
35
38
 
39
+ self.queued_at = now
36
40
  self.run_at = case
37
41
  when at.present?
38
42
  # this is rudimentary, add error handling
39
- options[:delay] ||= at.to_i - Time.zone.now.to_i
43
+ options[:delay] ||= at.to_i - now.to_i
40
44
  at
41
45
  when options[:delay].present?
42
- Time.zone.now + options[:delay].seconds
46
+ now + options[:delay].seconds
43
47
  end
44
48
 
45
49
  @_insert_options = options
@@ -47,6 +51,13 @@ module Postburner
47
51
  self.save!
48
52
  end
49
53
 
54
+ def requeue!(options={})
55
+ self.delete!
56
+ self.bkid, self.queued_at = nil, nil
57
+
58
+ self.queue! options
59
+ end
60
+
50
61
  def will_insert?
51
62
  @_insert_options.is_a? Hash
52
63
  end
@@ -104,7 +115,7 @@ module Postburner
104
115
  return
105
116
  end
106
117
 
107
- self.log!('START')
118
+ self.log!("START (bkid #{self.bkid})")
108
119
 
109
120
  begin
110
121
  self.perform(args)
@@ -114,7 +125,7 @@ module Postburner
114
125
  raise exception
115
126
  end
116
127
 
117
- self.log!('DONE')
128
+ self.log!("DONE (bkid #{self.bkid})")
118
129
 
119
130
  begin
120
131
  now = Time.zone.now
@@ -155,12 +166,9 @@ module Postburner
155
166
  end
156
167
 
157
168
  def remove!
158
- if self.beanstalk_job
159
- self.delete!
160
- self.update_column(:removed_at, Time.zone.now)
161
- else
162
- false
163
- end
169
+ return if self.removed_at
170
+ self.delete!
171
+ self.update_column(:removed_at, Time.zone.now)
164
172
  end
165
173
 
166
174
  def beanstalk_job
@@ -181,6 +189,7 @@ module Postburner
181
189
  self.errata << [
182
190
  Time.zone.now,
183
191
  {
192
+ bkid: self.bkid,
184
193
  class: exception.class,
185
194
  message: exception.message,
186
195
  backtrace: exception.backtrace,
@@ -200,9 +209,10 @@ module Postburner
200
209
  self.logs << [
201
210
  Time.zone.now, # time
202
211
  {
203
- level: options[:level], # level
204
- message: message, # message
205
- elapsed: self.elapsed_ms, # ms from start
212
+ bkid: self.bkid,
213
+ level: options[:level], # level
214
+ message: message, # message
215
+ elapsed: self.elapsed_ms, # ms from start
206
216
  }
207
217
  ]
208
218
  end
@@ -219,6 +229,12 @@ module Postburner
219
229
  self.update_column :logs, self.logs
220
230
  end
221
231
 
232
+ def intended_at
233
+ self.run_at ? self.run_at : self.queued_at
234
+ end
235
+
236
+ class AlreadyProcessed < StandardError; end
237
+
222
238
  private
223
239
 
224
240
  def persist_metadata!(data={})
@@ -236,19 +252,22 @@ module Postburner
236
252
  end
237
253
 
238
254
  def insert!(options={})
239
- response = Backburner::Worker.enqueue(
240
- Postburner::Job,
241
- self.id,
242
- options
243
- )
255
+ response = nil
256
+
257
+ Job.transaction do
258
+ response = Backburner::Worker.enqueue(
259
+ Postburner::Job,
260
+ self.id,
261
+ options
262
+ )
263
+
264
+ persist_metadata!(
265
+ bkid: response[:id],
266
+ )
267
+ end
244
268
 
245
269
  self.log("QUEUED: #{response}")
246
270
 
247
- persist_metadata!(
248
- queued_at: Time.zone.now,
249
- bkid: response[:id],
250
- )
251
-
252
271
  response
253
272
  end
254
273
 
@@ -256,14 +275,10 @@ module Postburner
256
275
  now = Time.zone.now
257
276
  self.attempts << now
258
277
  self.attempting_at ||= now
259
- self.lag ||= (self.attempting_at - self.intended_at) * 1000
278
+ self.lag ||= (self.attempting_at - self.intended_at) * 1000 rescue nil
260
279
  now
261
280
  end
262
281
 
263
- def intended_at
264
- self.run_at ? self.run_at : self.queued_at
265
- end
266
-
267
282
  def ensure_sid!
268
283
  self.sid ||= SecureRandom.uuid
269
284
  end
@@ -1,3 +1,3 @@
1
1
  module Postburner
2
- VERSION = '0.6.1'
2
+ VERSION = '0.6.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postburner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-01 00:00:00.000000000 Z
11
+ date: 2022-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -20,6 +20,9 @@ dependencies:
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 6.1.3.1
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 7.0.3
23
26
  type: :runtime
24
27
  prerelease: false
25
28
  version_requirements: !ruby/object:Gem::Requirement
@@ -30,6 +33,9 @@ dependencies:
30
33
  - - ">="
31
34
  - !ruby/object:Gem::Version
32
35
  version: 6.1.3.1
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: 7.0.3
33
39
  - !ruby/object:Gem::Dependency
34
40
  name: backburner
35
41
  requirement: !ruby/object:Gem::Requirement