counter_culture 3.5.0 → 3.5.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 +4 -4
- data/.circleci/config.yml +25 -7
- data/Appraisals +1 -0
- data/CHANGELOG.md +5 -0
- data/README.md +4 -2
- data/gemfiles/rails_7.1.gemfile +7 -0
- data/lib/counter_culture/counter.rb +2 -2
- data/lib/counter_culture/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6a69421ca46fbb8c213e7babacde9bb2d9fc365a956929855574f07b2f9d8d77
|
|
4
|
+
data.tar.gz: 67f26aea01f3b1647da2266c492ca0241fb17615f9a2d6af55e55f8a01b4fe11
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bd230e2a56efec0b5154a3568f00470829a123f36419e1297cb9f715be91755e30cbcc06bc0296c476d9e11df3b491adeff88b03631348be45b6f71b6f0f9ad9
|
|
7
|
+
data.tar.gz: b43aec06f3bc6d12f92d02ee7501ad254e5e2138776bc688b24bea2b0dd3fe68aed3dc5018158bc02ba0e1cacfee57b83ac1cf33349c4ef6fd5f664d08855922
|
data/.circleci/config.yml
CHANGED
|
@@ -48,8 +48,8 @@ workflows:
|
|
|
48
48
|
- test:
|
|
49
49
|
matrix:
|
|
50
50
|
parameters:
|
|
51
|
-
ruby-version: ["2.6", "2.7", "3.0", "3.1", "3.2"]
|
|
52
|
-
rails-version: ["5.2", "6.0", "6.1", "7.0"]
|
|
51
|
+
ruby-version: ["2.6", "2.7", "3.0", "3.1", "3.2", "3.3"]
|
|
52
|
+
rails-version: ["5.2", "6.0", "6.1", "7.0", "7.1"]
|
|
53
53
|
database: ["postgresql", "sqlite3", "mysql2"]
|
|
54
54
|
exclude:
|
|
55
55
|
- ruby-version: "3.0"
|
|
@@ -57,28 +57,37 @@ workflows:
|
|
|
57
57
|
database: "postgresql"
|
|
58
58
|
- ruby-version: "3.0"
|
|
59
59
|
rails-version: "5.2"
|
|
60
|
-
database: "
|
|
60
|
+
database: "mysql2"
|
|
61
61
|
- ruby-version: "3.0"
|
|
62
62
|
rails-version: "5.2"
|
|
63
|
-
database: "
|
|
63
|
+
database: "sqlite3"
|
|
64
64
|
- ruby-version: "3.1"
|
|
65
65
|
rails-version: "5.2"
|
|
66
66
|
database: "postgresql"
|
|
67
|
+
- ruby-version: "3.1"
|
|
68
|
+
rails-version: "5.2"
|
|
69
|
+
database: "mysql2"
|
|
67
70
|
- ruby-version: "3.1"
|
|
68
71
|
rails-version: "5.2"
|
|
69
72
|
database: "sqlite3"
|
|
70
73
|
- ruby-version: "3.2"
|
|
71
74
|
rails-version: "5.2"
|
|
72
|
-
database: "
|
|
75
|
+
database: "postgresql"
|
|
73
76
|
- ruby-version: "3.2"
|
|
74
77
|
rails-version: "5.2"
|
|
75
|
-
database: "
|
|
78
|
+
database: "mysql2"
|
|
76
79
|
- ruby-version: "3.2"
|
|
77
80
|
rails-version: "5.2"
|
|
78
81
|
database: "sqlite3"
|
|
79
|
-
- ruby-version: "3.
|
|
82
|
+
- ruby-version: "3.3"
|
|
83
|
+
rails-version: "5.2"
|
|
84
|
+
database: "postgresql"
|
|
85
|
+
- ruby-version: "3.3"
|
|
80
86
|
rails-version: "5.2"
|
|
81
87
|
database: "mysql2"
|
|
88
|
+
- ruby-version: "3.3"
|
|
89
|
+
rails-version: "5.2"
|
|
90
|
+
database: "sqlite3"
|
|
82
91
|
- ruby-version: "2.6"
|
|
83
92
|
rails-version: "7.0"
|
|
84
93
|
database: "postgresql"
|
|
@@ -88,3 +97,12 @@ workflows:
|
|
|
88
97
|
- ruby-version: "2.6"
|
|
89
98
|
rails-version: "7.0"
|
|
90
99
|
database: "mysql2"
|
|
100
|
+
- ruby-version: "2.6"
|
|
101
|
+
rails-version: "7.1"
|
|
102
|
+
database: "postgresql"
|
|
103
|
+
- ruby-version: "2.6"
|
|
104
|
+
rails-version: "7.1"
|
|
105
|
+
database: "sqlite3"
|
|
106
|
+
- ruby-version: "2.6"
|
|
107
|
+
rails-version: "7.1"
|
|
108
|
+
database: "mysql2"
|
data/Appraisals
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -74,7 +74,7 @@ class Group < ActiveRecord::Base
|
|
|
74
74
|
has_many :members, through: :group_memberships, class: "User"
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
class
|
|
77
|
+
class GroupMembership < ActiveRecord::Base
|
|
78
78
|
belongs_to :group
|
|
79
79
|
belongs_to :member, class: "User"
|
|
80
80
|
counter_culture :group, column_name: "members_count"
|
|
@@ -358,6 +358,8 @@ Product.counter_culture_fix_counts touch: 'category_count_changed'
|
|
|
358
358
|
|
|
359
359
|
The options start and finish are especially useful if you want multiple workers dealing with the same processing queue. You can make worker 1 handle all the records between id 1 and 9999 and worker 2 handle from 10000 and beyond by setting the :start and :finish option on each worker.
|
|
360
360
|
|
|
361
|
+
> **! NOTE**: the IDs we pass as `start` and `finish` here are in fact `Category` IDs, not `Product`!
|
|
362
|
+
|
|
361
363
|
```ruby
|
|
362
364
|
Product.counter_culture_fix_counts start: 10_000
|
|
363
365
|
# will fix counts for all counter caches defined on Product from record 10000 and onwards.
|
|
@@ -374,7 +376,7 @@ Product.counter_culture_fix_counts start: 2001, finish: 3000
|
|
|
374
376
|
|
|
375
377
|
#### Fix counter cache using a replica database
|
|
376
378
|
|
|
377
|
-
When fixing counter caches the number of reads usually vastly exceeds the number of writes. It can make sense to offload the
|
|
379
|
+
When fixing counter caches the number of reads usually vastly exceeds the number of writes. It can make sense to offload the read load to a replica database in this case. Rails 6 introduced [native handling of multiple database connections](https://guides.rubyonrails.org/v6.0/active_record_multiple_databases.html). You can use this to send read traffic to a read-only replica using the option `db_connection_builder`:
|
|
378
380
|
|
|
379
381
|
```ruby
|
|
380
382
|
Product.counter_culture_fix_counts db_connection_builder: proc{|reading, block|
|
|
@@ -81,8 +81,8 @@ module CounterCulture
|
|
|
81
81
|
end
|
|
82
82
|
# and here we update the timestamp, if so desired
|
|
83
83
|
if touch
|
|
84
|
-
current_time =
|
|
85
|
-
timestamp_columns =
|
|
84
|
+
current_time = klass.send(:current_time_from_proper_timezone)
|
|
85
|
+
timestamp_columns = klass.send(:timestamp_attributes_for_update_in_model)
|
|
86
86
|
if touch != true
|
|
87
87
|
# starting in Rails 6 this is frozen
|
|
88
88
|
timestamp_columns = timestamp_columns.dup
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: counter_culture
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.5.
|
|
4
|
+
version: 3.5.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Magnus von Koeller
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-01-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -317,6 +317,7 @@ files:
|
|
|
317
317
|
- gemfiles/rails_6.0.gemfile
|
|
318
318
|
- gemfiles/rails_6.1.gemfile
|
|
319
319
|
- gemfiles/rails_7.0.gemfile
|
|
320
|
+
- gemfiles/rails_7.1.gemfile
|
|
320
321
|
- lib/counter_culture.rb
|
|
321
322
|
- lib/counter_culture/counter.rb
|
|
322
323
|
- lib/counter_culture/extensions.rb
|