sidekiq-serialized_current_attributes 0.1.0 → 0.1.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
2
  SHA256:
3
- metadata.gz: 21dbbeb4be1ba5aae80db8434a3708247e43844aae1dc733ab18cbfed82b7dad
4
- data.tar.gz: 0113e0e2fe42bc22e570290c785482696eaf4da1fda0de83d7a757d2d8159ba2
3
+ metadata.gz: 07c37997ce8b0667f2dd9e99986564a2ba5dd34a921d6d1675ee1828266e042e
4
+ data.tar.gz: c05a2b825b218f49bc20959335daca3b6c4579521aedeb7f58a818897e9b3c2c
5
5
  SHA512:
6
- metadata.gz: a22ed569eb797e646694f592baf787570f2b8841b14f2655091e66260289bf1049d07f1de8881de540be66cc0b00be8cc6ab754c46172972b78123dfe4ef6efe
7
- data.tar.gz: 1a463411930f80a1fe92d59c52abcc87206582bfb9315a0424ef352a2e92bc6860bb75c86a5b7cbea403bcfa81e02574f8aee4b63256662ac407ac77d5ffa929
6
+ metadata.gz: 963c511d092b8a63bf02cdc8acc760544925d0eabde637e55fc0ebe31f2b2ca524c90c768a73cc32b977c2d3549423a00ae745d0e953399fee3bb44889de145a
7
+ data.tar.gz: 8ceded7169036323ab85b47f1c6a025f73fefb2e1d5c10f9540e717e8c1e98c3eafcc903cdc8f360dbcf61dffb9b09d2e744e1d3b78fef05d6efea085d9498bc
data/README.md CHANGED
@@ -22,8 +22,21 @@ require "sidekiq/serialized_current_attributes"
22
22
  Sidekiq::SerializedCurrentAttributes.persist("Myapp::Current")
23
23
  # or multiple current attributes
24
24
  Sidekiq::SerializedCurrentAttributes.persist(["Myapp::Current", "Myapp::OtherCurrent"])
25
+
26
+ # Discard destroyed records when serializing Current
27
+ Sidekiq::SerializedCurrentAttributes.discard_destroyed = true
25
28
  ```
26
29
 
30
+ ## Changelog
31
+
32
+ ### 0.1.1 (2023-10-16)
33
+
34
+ - Add option to discard destroyed records
35
+
36
+ ### 0.1.0
37
+
38
+ - Initial release
39
+
27
40
  ## License
28
41
 
29
42
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sidekiq
4
4
  module SerializedCurrentAttributes
5
- VERSION = "0.1.0"
5
+ VERSION = "0.1.1"
6
6
  end
7
7
  end
@@ -3,12 +3,15 @@
3
3
  require "sidekiq"
4
4
  require "active_support/current_attributes"
5
5
  require "active_job/arguments"
6
+ require "active_support/core_ext/module/attribute_accessors"
6
7
 
7
8
  require_relative "serialized_current_attributes/version"
8
9
 
9
10
  # Code is pretty directly taken from https://github.com/sidekiq/sidekiq/blob/main/lib/sidekiq/middleware/current_attributes.rb, and adjusted so it uses ActiveJob argument serialization to support storing models.
10
11
  module Sidekiq
11
12
  module SerializedCurrentAttributes
13
+ mattr_accessor :discard_destroyed, default: false
14
+
12
15
  class Save
13
16
  include Sidekiq::ClientMiddleware
14
17
 
@@ -29,6 +32,10 @@ module Sidekiq
29
32
  end
30
33
 
31
34
  def serialize(attributes)
35
+ if Sidekiq::SerializedCurrentAttributes.discard_destroyed
36
+ attributes = attributes.reject { |_, value| value.is_a?(GlobalID::Identification) && value.respond_to?(:destroyed?) && value.destroyed? }
37
+ end
38
+
32
39
  serialized_values = ActiveJob::Arguments.serialize(attributes.values)
33
40
  attributes.keys.zip(serialized_values).to_h
34
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-serialized_current_attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabian Schwahn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-11 00:00:00.000000000 Z
11
+ date: 2023-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob