common-data-caching 1.1.0 → 1.3.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: d730266341a778fbe9be901c33888915f5ed61d1568021321c06be30a80a5eda
4
- data.tar.gz: ac3e37326cec7a8e2821bd20f9d2ea3e02a66b5a902dacf481133940eb2c57e7
3
+ metadata.gz: 8a082bb986847e69fc1e8d00e0ca871c87ba71cf91fdbaad036dbb7212f3a15e
4
+ data.tar.gz: be69e9b648072e06927fa1808eb17fc6bb2a50cae15bd3fe1cee808439599d5b
5
5
  SHA512:
6
- metadata.gz: 4703cfd883e6b6c5ddba969b9a0d1ad2993102bf43eb9c0abb6064a3edfeaf56c653842e3d055626971afd46f1e351238292cdff8d132b5f8ce6bf7d23ad5552
7
- data.tar.gz: 71180277c938de63200c76f51481fd427ae1d69995986e8fbdb3126be3ce45ee3184680c813344bc381f3378d8dabec8127f09603fbf0a774f6a867ad58814b1
6
+ metadata.gz: 106b64506c7d3ca88b2e5b1caae0e2ab4025475ee07f574983e5d66c0c8fc329e4e8ef1adf0e3d15f15f0bb87b232b836a2f4e4880b6ccb5d858388d0a29357f
7
+ data.tar.gz: '08f15a5c15f5667d436d8f770d3ccc22561d22272ec998feed7847cc294b6ac21104300a299c9ae0263cac474c39381161169d175704fed08fb35b825695880f'
data/README.md CHANGED
@@ -47,6 +47,14 @@ User.common_data_cache_collection
47
47
  CommonDataCaching.versions
48
48
  ```
49
49
 
50
+ При необходимости, чтобы не обновлять кеш при создании или редактировании определенной записи, передайте `skip_common_data_caching: true` в качестве аргумента:
51
+
52
+ ```ruby
53
+ User.create(email: "user@example.com", skip_common_data_caching: true)
54
+
55
+ User.find(1).update(name: "User", skip_common_data_caching: true)
56
+ ```
57
+
50
58
  ### Сортировка
51
59
 
52
60
  Для применения сортировки, передайте опцию `order`:
@@ -3,6 +3,10 @@ module CommonDataCaching
3
3
 
4
4
  extend ActiveSupport::Concern
5
5
 
6
+ included do
7
+ attr_accessor :skip_common_data_caching
8
+ end
9
+
6
10
  def common_data_caching?
7
11
  true
8
12
  end
@@ -9,6 +9,15 @@ module CommonDataCaching
9
9
  Rails.cache.read('common-data-caching-versions') || {}
10
10
  end
11
11
 
12
+ def self.all_collections
13
+ versions.map do |entity, _version|
14
+ {
15
+ entity:,
16
+ objects: entity.constantize.common_data_cache_collection
17
+ }
18
+ end
19
+ end
20
+
12
21
  def self.update_cache
13
22
  # получение списка моделей
14
23
  Rails.application.eager_load!
@@ -49,10 +58,16 @@ ActiveSupport.on_load(:active_record) do
49
58
  # методы кеширования
50
59
  extend CommonDataCaching::ClassMethods
51
60
 
52
- # установка коллбэков
61
+ # коллбэки
53
62
  include CommonDataCaching::Callbacks
54
- after_commit :update_common_data_cache, on: %i[create update destroy], if: :common_data_caching?
55
- after_commit :update_common_data_cache_versions, on: %i[create update destroy], if: :common_data_caching?
63
+
64
+ after_commit :update_common_data_cache,
65
+ on: %i[create update destroy],
66
+ if: proc { |i| i.common_data_caching? && i.skip_common_data_caching != true }
67
+
68
+ after_commit :update_common_data_cache_versions,
69
+ on: %i[create update destroy],
70
+ if: proc { |i| i.common_data_caching? && i.skip_common_data_caching != true }
56
71
  end
57
72
  end
58
73
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: common-data-caching
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Павел Бабин
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-30 00:00:00.000000000 Z
11
+ date: 2024-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails