counter_culture 3.5.0 → 3.5.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: acebc4b3981511ea35497a3f276372253cb709314002ab2c6c498fb9b60a0166
4
- data.tar.gz: b659b8956b8e6911c58563e4f921487f49a3ddf8ada5fbee7b79b0de16f8796d
3
+ metadata.gz: 6a69421ca46fbb8c213e7babacde9bb2d9fc365a956929855574f07b2f9d8d77
4
+ data.tar.gz: 67f26aea01f3b1647da2266c492ca0241fb17615f9a2d6af55e55f8a01b4fe11
5
5
  SHA512:
6
- metadata.gz: 9ef804972ebbd99b5945b22d87c85d93dcd3af1ea78f04683a0799b67d25d42cb8c4ca52e08b9267fbd17f11e6fcd07a334e5990cccd5e4fd3ea27991da67fb4
7
- data.tar.gz: 81fa1adc6e283a1fed1a661e08cc7bd4a5280062cb8567ef730ce59342b0cf49032d09a9fc05bcbff713fbbd37d9a7157f2de35bc25df696d48f5de5bed9281c
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: "sqlite3"
60
+ database: "mysql2"
61
61
  - ruby-version: "3.0"
62
62
  rails-version: "5.2"
63
- database: "mysql2"
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: "mysql2"
75
+ database: "postgresql"
73
76
  - ruby-version: "3.2"
74
77
  rails-version: "5.2"
75
- database: "postgresql"
78
+ database: "mysql2"
76
79
  - ruby-version: "3.2"
77
80
  rails-version: "5.2"
78
81
  database: "sqlite3"
79
- - ruby-version: "3.1"
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
@@ -3,6 +3,7 @@
3
3
  6.0
4
4
  6.1
5
5
  7.0
6
+ 7.1
6
7
  ].each do |rails_version|
7
8
  appraise "rails-#{rails_version}" do
8
9
  gem 'rails', "~> #{rails_version}.0"
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 3.5.1 (January 8, 2024)
2
+
3
+ Bugfixes:
4
+ - Fix touching for counted models without `updated_at` (#383)
5
+
1
6
  ## 3.5.0 (August 25, 2023)
2
7
 
3
8
  Improvements:
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 Membership < ActiveRecord::Base
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 road 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 repliace using the option `db_connection_builder`:
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|
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 7.1.0"
6
+
7
+ gemspec path: "../"
@@ -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 = obj.send(:current_time_from_proper_timezone)
85
- timestamp_columns = obj.send(:timestamp_attributes_for_update_in_model)
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
@@ -1,3 +1,3 @@
1
1
  module CounterCulture
2
- VERSION = '3.5.0'.freeze
2
+ VERSION = '3.5.1'.freeze
3
3
  end
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.0
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: 2023-08-25 00:00:00.000000000 Z
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