replica_pools 2.3.1 → 2.4.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/lib/replica_pools/engine.rb +1 -1
- data/lib/replica_pools/query_cache.rb +8 -3
- data/lib/replica_pools/version.rb +1 -1
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5964174c34b75f5e1da7b607a50541dc515a6e5591189fc2f4d342ed0ca5454d
|
4
|
+
data.tar.gz: 3af78fc30241c55c3f5edf098c353b334cc22ed50cd38b4bceb520dc94b55d6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f166935354ee63f6544ca88b3e62b05ebb77af42c6b147f3af95fd36de4029f390396f027bbf22e84c4a946f44ec80f8e1394376e18899009d5bb6948bf3f204
|
7
|
+
data.tar.gz: 0f9508142a03028c8ac484bdb16c2f8be8e9253d50027b3ca847f1859a4e4e1211f83c20b823c54f13dd9e09a5650548dc4526ffe4e9eae68c639c44d6745b95
|
data/lib/replica_pools/engine.rb
CHANGED
@@ -19,11 +19,8 @@ module ReplicaPools
|
|
19
19
|
# connection for cache logic, but ultimately pass its query
|
20
20
|
# through to whatever connection is current.
|
21
21
|
def select_all(*args)
|
22
|
-
# there may be more args for Rails 5.0+, but we only care about arel, name, and binds for caching.
|
23
22
|
relation, name, raw_binds = args
|
24
23
|
|
25
|
-
# Rails 6.2 breaks this method as locked? is no longer available
|
26
|
-
# https://github.com/kickstarter/replica_pools/issues/26
|
27
24
|
if !query_cache_enabled || locked?(relation)
|
28
25
|
return route_to(current, :select_all, *args)
|
29
26
|
end
|
@@ -47,6 +44,14 @@ module ReplicaPools
|
|
47
44
|
end
|
48
45
|
end
|
49
46
|
|
47
|
+
# If arel is locked this is a SELECT ... FOR UPDATE or somesuch. Such
|
48
|
+
# queries should not be cached.
|
49
|
+
def locked?(arel)
|
50
|
+
# This method was copied from Rails 6.1, since it has been removed in 7.0
|
51
|
+
arel = arel.arel if arel.is_a?(ActiveRecord::Relation)
|
52
|
+
arel.respond_to?(:locked) && arel.locked
|
53
|
+
end
|
54
|
+
|
50
55
|
# these can use the unsafe delegation built into ConnectionProxy
|
51
56
|
# [:insert, :update, :delete]
|
52
57
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: replica_pools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Drabik
|
@@ -9,22 +9,28 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-07-
|
12
|
+
date: 2022-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '6.0'
|
21
|
+
- - "<"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '8.0'
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
|
-
- - "
|
28
|
+
- - ">"
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '6.0'
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '8.0'
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
name: mysql2
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|