sidekiq_lifecycle_hooks 1.0.0 → 1.2.0

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: 1c808c622f93fbfe6d9d61ae9113ad611528b50a472d6712ac91a8a74b1ccb30
4
- data.tar.gz: cb6344d7529e6972c7012fee6ace78372f3e3f98d66d02941bbc7a911dd359f8
3
+ metadata.gz: c9f6952ed887b4100cf66995f956ba991321208c27dec44696b13f38ed228dbe
4
+ data.tar.gz: 67fcab6bfbf89f60d88cec414e3aa75c2f41ceda81f6146172523feb99d9393d
5
5
  SHA512:
6
- metadata.gz: e6a55ba37e8204b54e9de3bb1f69f8c6a8a2d1f038d52bdea79076454ee7528933b913f8a5c63943e59ae940361e7db911ca1458a45678d0ae779ae910bb77f7
7
- data.tar.gz: 0c937985feab1f1a220dd419840e0534855da25797dbd01c0768720958a154251d8d33206d32f79aa5a8c31bdc7cccc97247416dfe098909060377290ab81963
6
+ metadata.gz: a1d8103f922ba8c5c0503f5471a88b57b3782c3f7394f43b736adb57313a37db6134b6d9ba82e0bd637fdf2be484bef456f2f07b1c4908b13469697ef1601712
7
+ data.tar.gz: 0371e9a8adcc25640be69b44af53e88044074383ae49525e361f0a587f5bf32e85b16634b87a3e7d6cc0dbe90dfa6d3e7a20461c7840e3ad986ce4741e6efe0b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+
2
+ ### 1.2.0
3
+
4
+ - Added a retry in Async job where record cannot be found, in case
5
+ attempt to find record occurred too early. This can happen when the initial record creation is delayed by e.g. after_create hooks and indexes.
6
+
7
+ ### 1.1.0
8
+
9
+ - Add early return in Async Job for when record cannot be found
10
+
11
+ ### 1.0.0
12
+
13
+ - Public launch; no changes to code
14
+
1
15
  ### 0.9.0
2
16
 
3
- - Set up Gem
17
+ - Set up Gem
data/lib/lifecycle_job.rb CHANGED
@@ -3,11 +3,14 @@ class LifecycleJob
3
3
  sidekiq_options queue: :default, retry: 1
4
4
 
5
5
  def perform(class_name, record_id, action, previous_attrs = '{}')
6
- record = if action == 'destroy'
7
- class_name.constantize.new(JSON.parse(previous_attrs))
8
- else
9
- class_name.constantize.find_by(id: record_id)
10
- end
6
+
7
+ record = fetch_record(class_name, record_id, action, previous_attrs)
8
+ unless record
9
+ sleep 3 # waits for 3 seconds before retrying
10
+ record = fetch_record(class_name, record_id, action, previous_attrs)
11
+ end
12
+
13
+ return unless record
11
14
 
12
15
  case action
13
16
  when 'create'
@@ -18,4 +21,14 @@ class LifecycleJob
18
21
  record.async_after_destroy_actions
19
22
  end
20
23
  end
24
+
25
+ private
26
+
27
+ def fetch_record(class_name, record_id, action, previous_attrs)
28
+ if action == 'destroy'
29
+ class_name.constantize.new(JSON.parse(previous_attrs))
30
+ else
31
+ class_name.constantize.find_by(id: record_id)
32
+ end
33
+ end
21
34
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SidekiqLifecycleHooks
4
- VERSION = "1.0.0"
4
+ VERSION = "1.2.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_lifecycle_hooks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Taylor
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-02 00:00:00.000000000 Z
11
+ date: 2023-11-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -47,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  requirements: []
50
- rubygems_version: 3.4.20
50
+ rubygems_version: 3.4.10
51
51
  signing_key:
52
52
  specification_version: 4
53
53
  summary: Asynchronous lifecycle hooks for rails apps using sidekiq.