counter_culture 3.7.0 → 3.8.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 +4 -4
- data/.circleci/config.yml +28 -1
- data/Appraisals +1 -0
- data/CHANGELOG.md +5 -0
- data/gemfiles/rails_7.2.gemfile +7 -0
- data/lib/counter_culture/counter.rb +9 -5
- data/lib/counter_culture/reconciler.rb +5 -1
- data/lib/counter_culture/version.rb +1 -1
- data/lib/counter_culture/with_connection.rb +33 -0
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 225d25bff8cd9226371b162e6761603271cbac02c74be1dd7398de2dc63dbb71
|
|
4
|
+
data.tar.gz: ea2b215508e285bab75efcbf3aeb153a15458c22db0cc0b79350bb2e9b3a9e05
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
data/CHANGELOG.md
CHANGED
|
@@ -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 =
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
|
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)
|
|
@@ -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.
|
|
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-
|
|
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
|