active_record_host_pool 1.2.1 → 1.2.3
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/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
|