counter_culture 3.7.0 → 3.8.0

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: 88687e8c584a1643026e8e09d9f64484110fd7a19ebf1faa6cb311361e8c35ca
4
- data.tar.gz: a81ac645489129472e265f3bfefa0573f11a9e8419a40ba7f4c687c692367177
3
+ metadata.gz: 225d25bff8cd9226371b162e6761603271cbac02c74be1dd7398de2dc63dbb71
4
+ data.tar.gz: ea2b215508e285bab75efcbf3aeb153a15458c22db0cc0b79350bb2e9b3a9e05
5
5
  SHA512:
6
- metadata.gz: 82ffa1af6e6ad80f68a56b77cdae1f68dd30aa63535281f4ee19ee3ad1e5f88cc7053ae4cab6f1786db7038baeb81cf5c434b1b657f886b62862d79b0d99d7dc
7
- data.tar.gz: 83e5c626c97583727a5cbef6c824dd5eb25625d169a53e65e73bd1d2ab633121bb2a1a2de430a2d522caa92382b5852d731e0f954818fa906ab2b0060986119a
6
+ metadata.gz: 5362e9b1db5c4a81944e3deeddec9c7945ae349cca9f663dae140fb1516f00b9bd41d4d34af4705c2d4600ee65dabe2a41bc0a53e1a98ba682385228b0f4e41a
7
+ data.tar.gz: 60d99dab523e3f339961c4d19393f27de41006c361dc190baf25676157dded5b98382d77cca3dd76533cb070e3eec14965bb90ffe3f13991ba6d409cdf3e779a
data/.circleci/config.yml CHANGED
@@ -49,7 +49,7 @@ workflows:
49
49
  matrix:
50
50
  parameters:
51
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"]
52
+ rails-version: ["5.2", "6.0", "6.1", "7.0", "7.1", "7.2"]
53
53
  database: ["postgresql", "sqlite3", "mysql2"]
54
54
  exclude:
55
55
  - ruby-version: "3.0"
@@ -106,3 +106,30 @@ workflows:
106
106
  - ruby-version: "2.6"
107
107
  rails-version: "7.1"
108
108
  database: "mysql2"
109
+ - ruby-version: "2.6"
110
+ rails-version: "7.2"
111
+ database: "postgresql"
112
+ - ruby-version: "2.6"
113
+ rails-version: "7.2"
114
+ database: "sqlite3"
115
+ - ruby-version: "2.6"
116
+ rails-version: "7.2"
117
+ database: "mysql2"
118
+ - ruby-version: "2.7"
119
+ rails-version: "7.2"
120
+ database: "postgresql"
121
+ - ruby-version: "2.7"
122
+ rails-version: "7.2"
123
+ database: "sqlite3"
124
+ - ruby-version: "2.7"
125
+ rails-version: "7.2"
126
+ database: "mysql2"
127
+ - ruby-version: "3.0"
128
+ rails-version: "7.2"
129
+ database: "postgresql"
130
+ - ruby-version: "3.0"
131
+ rails-version: "7.2"
132
+ database: "sqlite3"
133
+ - ruby-version: "3.0"
134
+ rails-version: "7.2"
135
+ database: "mysql2"
data/Appraisals CHANGED
@@ -4,6 +4,7 @@
4
4
  6.1
5
5
  7.0
6
6
  7.1
7
+ 7.2
7
8
  ].each do |rails_version|
8
9
  appraise "rails-#{rails_version}" do
9
10
  gem 'rails', "~> #{rails_version}.0"
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 3.8.0 (October 4, 2024)
2
+
3
+ New features:
4
+ - Prefer using `with_connection` where possible (#398)
5
+
1
6
  ## 3.7.0 (June 20, 2024)
2
7
 
3
8
  New features:
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 7.2.0"
6
+
7
+ gemspec path: "../"
@@ -1,3 +1,5 @@
1
+ require_relative './with_connection'
2
+
1
3
  module CounterCulture
2
4
  class Counter
3
5
  CONFIG_OPTIONS = [ :column_names, :counter_cache_name, :delta_column, :foreign_key_values, :touch, :delta_magnitude, :execute_after_commit ]
@@ -65,11 +67,13 @@ module CounterCulture
65
67
  # MySQL throws an ambiguous column error if any joins are present and we don't include the
66
68
  # table name. We isolate this change to MySQL because sqlite has the opposite behavior and
67
69
  # throws an exception if the table name is present after UPDATE.
68
- quoted_column = if klass.connection.adapter_name == 'Mysql2'
69
- "#{klass.quoted_table_name}.#{model.connection.quote_column_name(change_counter_column)}"
70
- else
71
- "#{model.connection.quote_column_name(change_counter_column)}"
72
- end
70
+ quoted_column = WithConnection.new(klass).call do |connection|
71
+ if connection.adapter_name == 'Mysql2'
72
+ "#{klass.quoted_table_name}.#{connection.quote_column_name(change_counter_column)}"
73
+ else
74
+ "#{connection.quote_column_name(change_counter_column)}"
75
+ end
76
+ end
73
77
 
74
78
  column_type = klass.type_for_attribute(change_counter_column).type
75
79
 
@@ -1,6 +1,8 @@
1
1
  require 'active_support/core_ext/module/delegation'
2
2
  require 'active_support/core_ext/module/attribute_accessors'
3
3
 
4
+ require_relative './with_connection'
5
+
4
6
  module CounterCulture
5
7
  class Reconciler
6
8
  ACTIVE_RECORD_VERSION = Gem.loaded_specs["activerecord"].version
@@ -312,7 +314,9 @@ module CounterCulture
312
314
  # using Postgres with schema-namespaced tables. But then it's required,
313
315
  # and otherwise it's just a no-op, so why not do it?
314
316
  def quote_table_name(table_name)
315
- relation_class.connection.quote_table_name(table_name)
317
+ WithConnection.new(relation_class).call do |connection|
318
+ connection.quote_table_name(table_name)
319
+ end
316
320
  end
317
321
 
318
322
  def parameterize(string)
@@ -1,3 +1,3 @@
1
1
  module CounterCulture
2
- VERSION = '3.7.0'.freeze
2
+ VERSION = '3.8.0'.freeze
3
3
  end
@@ -0,0 +1,33 @@
1
+ module CounterCulture
2
+ class WithConnection
3
+ def initialize(recipient)
4
+ @recipient = recipient
5
+ end
6
+
7
+ attr_reader :recipient
8
+
9
+ def call
10
+ if rails_7_2_or_greater?
11
+ recipient.with_connection do |connection|
12
+ yield connection
13
+ end
14
+ elsif rails_7_1?
15
+ recipient.connection_pool.with_connection do |connection|
16
+ yield connection
17
+ end
18
+ else
19
+ yield recipient.connection
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def rails_7_1?
26
+ Gem::Requirement.new('~> 7.1.0').satisfied_by?(Gem::Version.new(Rails.version))
27
+ end
28
+
29
+ def rails_7_2_or_greater?
30
+ Gem::Requirement.new('>= 7.2.0').satisfied_by?(Gem::Version.new(Rails.version))
31
+ end
32
+ end
33
+ 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.7.0
4
+ version: 3.8.0
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: 2024-06-20 00:00:00.000000000 Z
11
+ date: 2024-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -318,12 +318,14 @@ files:
318
318
  - gemfiles/rails_6.1.gemfile
319
319
  - gemfiles/rails_7.0.gemfile
320
320
  - gemfiles/rails_7.1.gemfile
321
+ - gemfiles/rails_7.2.gemfile
321
322
  - lib/counter_culture.rb
322
323
  - lib/counter_culture/counter.rb
323
324
  - lib/counter_culture/extensions.rb
324
325
  - lib/counter_culture/reconciler.rb
325
326
  - lib/counter_culture/skip_updates.rb
326
327
  - lib/counter_culture/version.rb
328
+ - lib/counter_culture/with_connection.rb
327
329
  - lib/generators/counter_culture_generator.rb
328
330
  - lib/generators/templates/counter_culture_migration.rb.erb
329
331
  homepage: https://github.com/magnusvk/counter_culture