adequate_serialization 2.0.0 → 2.0.1

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: 85146c58398835d031d5a5f1acf857314053bd3a3eeef74a9a805c01b595dd8d
4
- data.tar.gz: fe2b4c681f16af90ee97689fffb85d6dba5444de178bfd6b2a8eba97cbf9b62c
3
+ metadata.gz: 273a3e30de9eed1f993b3f83aae405a660bc84aea6f9bf59682c7d99ca838a9c
4
+ data.tar.gz: e3ec7712f4f66088ec4017b4add90977c3282b0d057362bc14d4bf2ed30c1c49
5
5
  SHA512:
6
- metadata.gz: 2c885c5465c961352409433e327baf8b6a1983b7a0a0342c74faa69446cc1ea2acc3ad616e4621f4ed601e40182fba843cabec4f52e6a1869471824887061b5d
7
- data.tar.gz: 312bea7bb4ea77435edad2131d085a28a7a709ec01ee737558c1ba37191d5f9bf97f02d174ab457b26390bbe7875b090cbf283389122f15b231ef58c60be79ac
6
+ metadata.gz: ebf077cfd6ddfbd155a45fcdbff67ab31f003adc2df6567e1d672cee581b6fbd58e021ceb7a011fd98e54cdecf4a3f9cfbab346b3c6e996defbb34669bdd1050
7
+ data.tar.gz: 5a2641ee46b36951066f77670b15fe80fe8b48bbaa41808a3d359a2c8fcf89766b7e638b435dffceaf1dc90e905bd1ffc73ca0559100781763d1e5bea433165a
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.0.1] - 2020-01-02
10
+
11
+ ### Added
12
+
13
+ - The top level `AdequateSerialization::associate_cache` method for arbitrarily associating caches between records. Useful for things like polymorphic associations which cannot be performed automatically.
14
+
15
+ ### Changed
16
+
17
+ - Fixed the active job queue setting configuration so that it will properly update ActiveJob when using Sidekiq.
18
+ - Fixed the cache busting for regular has_many relationships.
19
+ - Changed the name of the `::serialized_associations` method to `::associated_caches` to be more clear.
20
+
9
21
  ## [2.0.0] - 2019-12-31
10
22
 
11
23
  ### Added
@@ -46,7 +58,9 @@ end
46
58
 
47
59
  - No longer trigger another query when the `ActiveRecord` relation being serialized isn't loaded.
48
60
 
49
- [unreleased]: https://github.com/CultureHQ/adequate_serialization/compare/v1.0.1...HEAD
61
+ [unreleased]: https://github.com/CultureHQ/adequate_serialization/compare/v2.0.1...HEAD
62
+ [2.0.1]: https://github.com/CultureHQ/adequate_serialization/compare/v2.0.0...v2.0.1
63
+ [2.0.0]: https://github.com/CultureHQ/adequate_serialization/compare/v1.0.1...v2.0.0
50
64
  [1.0.1]: https://github.com/CultureHQ/adequate_serialization/compare/v1.0.0...v1.0.1
51
65
  [1.0.0]: https://github.com/CultureHQ/adequate_serialization/compare/v0.1.1...v1.0.0
52
66
  [0.1.1]: https://github.com/CultureHQ/adequate_serialization/compare/fcc7c7...v0.1.1
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adequate_serialization (2.0.0)
4
+ adequate_serialization (2.0.1)
5
5
  oj (~> 3.10)
6
6
 
7
7
  GEM
@@ -76,7 +76,7 @@ GEM
76
76
  i18n (1.7.0)
77
77
  concurrent-ruby (~> 1.0)
78
78
  jaro_winkler (1.5.4)
79
- json (2.2.0)
79
+ json (2.3.0)
80
80
  loofah (2.4.0)
81
81
  crass (~> 1.0.2)
82
82
  nokogiri (>= 1.5.9)
@@ -94,7 +94,7 @@ GEM
94
94
  mini_portile2 (~> 2.4.0)
95
95
  oj (3.10.0)
96
96
  parallel (1.19.1)
97
- parser (2.6.5.0)
97
+ parser (2.7.0.1)
98
98
  ast (~> 2.4.0)
99
99
  rack (2.0.8)
100
100
  rack-test (1.1.0)
@@ -150,7 +150,7 @@ GEM
150
150
  sqlite3 (1.4.2)
151
151
  thor (0.20.3)
152
152
  thread_safe (0.3.6)
153
- tzinfo (1.2.5)
153
+ tzinfo (1.2.6)
154
154
  thread_safe (~> 0.1)
155
155
  unicode-display_width (1.6.0)
156
156
  websocket-driver (0.7.1)
@@ -10,14 +10,36 @@ module AdequateSerialization
10
10
  end
11
11
 
12
12
  class << self
13
- attr_accessor :active_job_queue
13
+ attr_reader :active_job_queue
14
14
 
15
+ # Configure the queue name that AdequateSerialization will use when
16
+ # enqueuing jobs to bust associated caches.
17
+ def active_job_queue=(queue_name)
18
+ require 'adequate_serialization/rails/cache_refresh'
19
+ CacheRefresh::CacheRefreshJob.queue_name = queue_name
20
+ end
21
+
22
+ # Associate one or more caches with an active record such that when the
23
+ # record is updated the associated object caches are also updated.
24
+ def associate_cache(active_record, *association_names)
25
+ require 'adequate_serialization/rails/cache_refresh'
26
+
27
+ unless active_record.respond_to?(:associate_cache)
28
+ active_record.extend(CacheRefresh)
29
+ end
30
+
31
+ association_names.each do |association_name|
32
+ active_record.associate_cache(association_name)
33
+ end
34
+ end
35
+
36
+ # DSL-like block for parity with other Ruby/Rails libraries.
15
37
  def configure
16
38
  yield self
17
39
  end
18
40
  end
19
41
 
20
- self.active_job_queue = :default
42
+ @active_job_queue = :default
21
43
  end
22
44
 
23
45
  require 'adequate_serialization/attribute'
@@ -2,7 +2,7 @@
2
2
 
3
3
  module AdequateSerialization
4
4
  module CacheBusting
5
- class InverseNotFoundError < StandardError
5
+ class InverseNotFoundError < Error
6
6
  def initialize(record, association)
7
7
  super(<<~MSG)
8
8
  In order to be able to bust the associated cache for #{record}'s
@@ -14,7 +14,7 @@ module AdequateSerialization
14
14
  end
15
15
  end
16
16
 
17
- class TouchNotFoundError < StandardError
17
+ class TouchNotFoundError < Error
18
18
  def initialize(record, associated, inverse)
19
19
  super(<<~MSG)
20
20
  #{record} serializes all of the associated #{associated} records,
@@ -40,15 +40,12 @@ module AdequateSerialization
40
40
  using(
41
41
  Module.new do
42
42
  refine ActiveRecord::Base.singleton_class do
43
- def setup_serialize_association(association_name)
43
+ def setup_association_cache(association_name)
44
44
  unless defined?(ActiveJob)
45
45
  raise ActiveJobNotFoundError.new(name, association_name)
46
46
  end
47
47
 
48
- require 'adequate_serialization/rails/cache_refresh'
49
- extend(CacheRefresh) unless respond_to?(:serialize_association)
50
-
51
- serialize_association(association_name)
48
+ AdequateSerialization.associate_cache(self, association_name)
52
49
  end
53
50
  end
54
51
 
@@ -80,7 +77,7 @@ module AdequateSerialization
80
77
  # Hooks into the serialized class and adds cache busting behavior on
81
78
  # commit that will loop through the associated records
82
79
  def setup_has_some
83
- active_record.setup_serialize_association(name)
80
+ klass.setup_association_cache(inverse_of.name)
84
81
  end
85
82
  end
86
83
 
@@ -90,7 +87,7 @@ module AdequateSerialization
90
87
  raise InverseNotFoundError.new(active_record.name, name)
91
88
  end
92
89
 
93
- klass.setup_serialize_association(inverse_of.name)
90
+ klass.setup_association_cache(inverse_of.name)
94
91
  end
95
92
  end
96
93
  end
@@ -33,11 +33,11 @@ module AdequateSerialization
33
33
  end
34
34
  )
35
35
 
36
- queue_as -> { AdequateSerialization.active_job_queue }
36
+ queue_as AdequateSerialization.active_job_queue
37
37
  discard_on ActiveJob::DeserializationError
38
38
 
39
39
  def perform(record)
40
- record.class.serialized_associations.each do |association|
40
+ record.class.associated_caches.each do |association|
41
41
  record.public_send(association).refresh
42
42
  end
43
43
  end
@@ -47,14 +47,14 @@ module AdequateSerialization
47
47
  base.after_update_commit { CacheRefreshJob.perform_later(self) }
48
48
  end
49
49
 
50
- def serialize_association(association)
51
- serialized_associations << association
50
+ def associate_cache(association)
51
+ associated_caches << association
52
52
  end
53
53
 
54
54
  # The associations that serialize this object in their responses, so that we
55
55
  # know to bust their cache when this object is updated.
56
- def serialized_associations
57
- @serialized_associations ||= []
56
+ def associated_caches
57
+ @associated_caches ||= []
58
58
  end
59
59
  end
60
60
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AdequateSerialization
4
- VERSION = '2.0.0'
4
+ VERSION = '2.0.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adequate_serialization
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Deisz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-31 00:00:00.000000000 Z
11
+ date: 2020-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj