active_record_host_pool 1.2.1 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_record_host_pool/clear_query_cache_patch.rb +5 -5
- data/lib/active_record_host_pool/connection_adapter_mixin.rb +5 -5
- data/lib/active_record_host_pool/pool_proxy_6_1.rb +5 -1
- data/lib/active_record_host_pool/pool_proxy_legacy.rb +5 -1
- data/lib/active_record_host_pool/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06f626b21d430564a336b02a25263b73e005466bb3b654750218aa34af3b3a49
|
4
|
+
data.tar.gz: bcdae62eb1f0dbf16cc6c2cb2a9c2c17fe587e94cb4ce24b35ccc3cab794d43c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74bcb39947f4b10f8bfef8389beb1fc2e14acabc05bea868a13d0b7e921968dc15deb43376cc68cd403b89fc9cac7cd90b436776edf16e3cb18f663aee678845
|
7
|
+
data.tar.gz: 75253b513d4f8695293de0cb810d9c4bd63e85c0815b56ac6d4984218b8c05d2c11be76dbe5f2b28839198d0f43cc59da768e193f46dd35cf1f3e29c92ddcaf2
|
@@ -20,19 +20,19 @@ if ActiveRecord.version >= Gem::Version.new('6.0')
|
|
20
20
|
# actively working on sharding in Rails 6 and above.
|
21
21
|
module ClearQueryCachePatch
|
22
22
|
def clear_query_caches_for_current_thread
|
23
|
-
host_pool_current_database_was =
|
23
|
+
host_pool_current_database_was = connection_pool._unproxied_connection._host_pool_current_database
|
24
24
|
super
|
25
25
|
ensure
|
26
26
|
# restore in case clearing the cache changed the database
|
27
|
-
|
27
|
+
connection_pool._unproxied_connection._host_pool_current_database = host_pool_current_database_was
|
28
28
|
end
|
29
29
|
|
30
30
|
def clear_on_handler(handler)
|
31
31
|
handler.all_connection_pools.each do |pool|
|
32
|
-
db_was = pool.
|
33
|
-
pool.
|
32
|
+
db_was = pool._unproxied_connection._host_pool_current_database
|
33
|
+
pool._unproxied_connection.clear_query_cache if pool.active_connection?
|
34
34
|
ensure
|
35
|
-
pool.
|
35
|
+
pool._unproxied_connection._host_pool_current_database = db_was
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -8,11 +8,6 @@ module ActiveRecordHostPool
|
|
8
8
|
base.class_eval do
|
9
9
|
attr_reader(:_host_pool_current_database)
|
10
10
|
|
11
|
-
def _host_pool_current_database=(database)
|
12
|
-
@_host_pool_current_database = database
|
13
|
-
@config[:database] = _host_pool_current_database
|
14
|
-
end
|
15
|
-
|
16
11
|
alias_method :execute_without_switching, :execute
|
17
12
|
alias_method :execute, :execute_with_switching
|
18
13
|
|
@@ -32,6 +27,11 @@ module ActiveRecordHostPool
|
|
32
27
|
super
|
33
28
|
end
|
34
29
|
|
30
|
+
def _host_pool_current_database=(database)
|
31
|
+
@_host_pool_current_database = database
|
32
|
+
@config[:database] = _host_pool_current_database
|
33
|
+
end
|
34
|
+
|
35
35
|
def self.ruby2_keywords(*); end unless respond_to?(:ruby2_keywords, true)
|
36
36
|
ruby2_keywords def execute_with_switching(*args, **kwargs)
|
37
37
|
if _host_pool_current_database && !_no_switch
|
@@ -34,13 +34,17 @@ module ActiveRecordHostPool
|
|
34
34
|
attr_reader :pool_config
|
35
35
|
|
36
36
|
def connection(*args)
|
37
|
-
real_connection =
|
37
|
+
real_connection = _unproxied_connection(*args)
|
38
38
|
_connection_proxy_for(real_connection, @config[:database])
|
39
39
|
rescue Mysql2::Error, ActiveRecord::NoDatabaseError
|
40
40
|
_connection_pools.delete(_pool_key)
|
41
41
|
Kernel.raise
|
42
42
|
end
|
43
43
|
|
44
|
+
def _unproxied_connection(*args)
|
45
|
+
_connection_pool.connection(*args)
|
46
|
+
end
|
47
|
+
|
44
48
|
# by the time we are patched into ActiveRecord, the current thread has already established
|
45
49
|
# a connection. thus we need to patch both connection and checkout/checkin
|
46
50
|
def checkout(*args, &block)
|
@@ -36,13 +36,17 @@ module ActiveRecordHostPool
|
|
36
36
|
attr_reader :spec
|
37
37
|
|
38
38
|
def connection(*args)
|
39
|
-
real_connection =
|
39
|
+
real_connection = _unproxied_connection(*args)
|
40
40
|
_connection_proxy_for(real_connection, @config[:database])
|
41
41
|
rescue Mysql2::Error, ActiveRecord::NoDatabaseError
|
42
42
|
_connection_pools.delete(_pool_key)
|
43
43
|
Kernel.raise
|
44
44
|
end
|
45
45
|
|
46
|
+
def _unproxied_connection(*args)
|
47
|
+
_connection_pool.connection(*args)
|
48
|
+
end
|
49
|
+
|
46
50
|
# by the time we are patched into ActiveRecord, the current thread has already established
|
47
51
|
# a connection. thus we need to patch both connection and checkout/checkin
|
48
52
|
def checkout(*args, &block)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_host_pool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Quorning
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2023-01-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activerecord
|