active_record_host_pool 2.0.0 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6c85e552706dd86fe493aadff36c1c3cc6d9115ab9ee7bbfd627b3d684a02bd
4
- data.tar.gz: 7effa38f67de9456d748027f27544bbc4f07afacba671c505dd8d23645648572
3
+ metadata.gz: cc285794dcf2d9fd3d54249bc94aea1a9ae64d76868040dc583aa669388cd444
4
+ data.tar.gz: fe57775f7b80266bddb5f019b48eb7f5a741a7a9f8e0858604e6a74e12df5501
5
5
  SHA512:
6
- metadata.gz: 8119ce55b8f44d7e29f195228c7055c1fe3c771916fc3ff31cc51e2db3ed7064c14db2424b6fdebf0a0a086e894cfb33faa97d87f1a16d272bff54957d3e20b0
7
- data.tar.gz: 885cb1e3676d698f93394eb8686af27d5b2d2f2d194f3e533a3a20f3272678a08caf92d6819d08002c989f637430f8eb4d9fddd66d5bbbdccafbbd006da44c57
6
+ metadata.gz: 76037970cdd4288865b5e7e02d233d64699c60cc9054887465b21442e136da7f336d77623be76222ee45a75daac74b5e34581942793bf379fcb7df0b6229a4c4
7
+ data.tar.gz: e8ae94a9a9141891e5a4dbb0a61d08b13499546603b409f73d9a0de799112c68ca2705670a200c08cbb7ce3178135040808ac14323ac223afbc9519e21bff960
data/Changelog.md CHANGED
@@ -6,6 +6,27 @@ and as of v1.0.0 this project adheres to [Semantic Versioning](https://semver.or
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.2.0]
10
+ ### Removed
11
+ - Support for Ruby 3.0.
12
+
13
+ ### Added
14
+ - Rails 6.1 testing with Trilogy.
15
+
16
+ ### Fixed
17
+ - Fixed using ActiveRecordHostPool and the `activerecord-trilogy-adapter v3.1+`.
18
+
19
+ ### Changed
20
+ - ActiveRecordHostPool will now raise an exception if you try to use a version of `activerecord-trilogy-adapter < 3.1`.
21
+
22
+ ## [2.1.0]
23
+
24
+ ### Changed
25
+ - ActiveRecordHostPool now uses prepend to patch `#execute`, `#raw_execute`, `#drop_database`, `#create_database`, and `#disconnect!`. Prepending is incompatible when also using `alias` or `alias_method` to patch those methods; avoid aliasing them to prevent an infinite loop.
26
+
27
+ ### Removed
28
+ - Dropped support for Ruby 2.7.x.
29
+
9
30
  ## [2.0.0]
10
31
 
11
32
  ### Added
@@ -7,7 +7,6 @@ when :trilogy
7
7
  case "#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}"
8
8
  when "6.1", "7.0"
9
9
  require "trilogy_adapter/connection"
10
- require "trilogy_adapter/errors"
11
10
  ActiveRecord::Base.extend(TrilogyAdapter::Connection)
12
11
  when "7.1"
13
12
  require "active_record/connection_adapters/trilogy_adapter"
@@ -18,32 +17,7 @@ end
18
17
 
19
18
  module ActiveRecordHostPool
20
19
  module DatabaseSwitch
21
- def self.included(base)
22
- base.class_eval do
23
- attr_reader(:_host_pool_current_database)
24
-
25
- # Patch `raw_execute` instead of `execute` since this commit:
26
- # https://github.com/rails/rails/commit/f69bbcbc0752ca5d5af327d55922614a26f5c7e9
27
- case "#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}"
28
- when "7.1"
29
- alias_method :raw_execute_without_switching, :raw_execute
30
- alias_method :raw_execute, :raw_execute_with_switching
31
- else
32
- alias_method :execute_without_switching, :execute
33
- alias_method :execute, :execute_with_switching
34
- end
35
-
36
- alias_method :drop_database_without_no_switching, :drop_database
37
- alias_method :drop_database, :drop_database_with_no_switching
38
-
39
- alias_method :create_database_without_no_switching, :create_database
40
- alias_method :create_database, :create_database_with_no_switching
41
-
42
- alias_method :disconnect_without_host_pooling!, :disconnect!
43
- alias_method :disconnect!, :disconnect_with_host_pooling!
44
- end
45
- end
46
-
20
+ attr_reader :_host_pool_current_database
47
21
  def initialize(*)
48
22
  @_cached_current_database = nil
49
23
  super
@@ -54,44 +28,42 @@ module ActiveRecordHostPool
54
28
  @config[:database] = _host_pool_current_database
55
29
  end
56
30
 
57
- def self.ruby2_keywords(*); end unless respond_to?(:ruby2_keywords, true)
58
- # This one really does need ruby2_keywords; in Rails 6.0 the method does not take
59
- # any keyword arguments, but in Rails 7.0+ it does. So, we don't know whether or not
60
- # what we're delegating to takes kwargs, so ruby2_keywords is needed.
61
- if ActiveRecord.version >= Gem::Version.new("7.1")
62
- ruby2_keywords def raw_execute_with_switching(*args)
31
+ if ActiveRecord.version >= Gem::Version.new("7.1") || ActiveRecordHostPool.loaded_db_adapter == :trilogy
32
+ # Patch `raw_execute` instead of `execute` since this commit:
33
+ # https://github.com/rails/rails/commit/f69bbcbc0752ca5d5af327d55922614a26f5c7e9
34
+ def raw_execute(...)
63
35
  if _host_pool_current_database && !_no_switch
64
36
  _switch_connection
65
37
  end
66
- raw_execute_without_switching(*args)
38
+ super
67
39
  end
68
40
  else
69
- ruby2_keywords def execute_with_switching(*args)
41
+ def execute(...)
70
42
  if _host_pool_current_database && !_no_switch
71
43
  _switch_connection
72
44
  end
73
- execute_without_switching(*args)
45
+ super
74
46
  end
75
47
  end
76
48
 
77
- def drop_database_with_no_switching(*args)
49
+ def drop_database(...)
78
50
  self._no_switch = true
79
- drop_database_without_no_switching(*args)
51
+ super
80
52
  ensure
81
53
  self._no_switch = false
82
54
  end
83
55
 
84
- def create_database_with_no_switching(*args)
56
+ def create_database(...)
85
57
  self._no_switch = true
86
- create_database_without_no_switching(*args)
58
+ super
87
59
  ensure
88
60
  self._no_switch = false
89
61
  end
90
62
 
91
- def disconnect_with_host_pooling!
63
+ def disconnect!
92
64
  @_cached_current_database = nil
93
65
  @_cached_connection_object_id = nil
94
- disconnect_without_host_pooling!
66
+ super
95
67
  end
96
68
 
97
69
  private
@@ -130,9 +102,9 @@ end
130
102
 
131
103
  case ActiveRecordHostPool.loaded_db_adapter
132
104
  when :mysql2
133
- ActiveRecord::ConnectionAdapters::Mysql2Adapter.include(ActiveRecordHostPool::DatabaseSwitch)
105
+ ActiveRecord::ConnectionAdapters::Mysql2Adapter.prepend(ActiveRecordHostPool::DatabaseSwitch)
134
106
  when :trilogy
135
- ActiveRecord::ConnectionAdapters::TrilogyAdapter.include(ActiveRecordHostPool::DatabaseSwitch)
107
+ ActiveRecord::ConnectionAdapters::TrilogyAdapter.prepend(ActiveRecordHostPool::DatabaseSwitch)
136
108
  end
137
109
 
138
110
  ActiveRecord::ConnectionAdapters::PoolConfig.prepend(ActiveRecordHostPool::PoolConfigPatch)
@@ -44,14 +44,13 @@ module ActiveRecordHostPool
44
44
  __getobj__.private_methods(all) | super
45
45
  end
46
46
 
47
- def send(symbol, *args, &blk)
47
+ def send(symbol, ...)
48
48
  if respond_to?(symbol, true) && !__getobj__.respond_to?(symbol, true)
49
49
  super
50
50
  else
51
- __getobj__.send(symbol, *args, &blk)
51
+ __getobj__.send(symbol, ...)
52
52
  end
53
53
  end
54
- ruby2_keywords :send if respond_to?(:ruby2_keywords, true)
55
54
 
56
55
  def ==(other)
57
56
  self.class == other.class &&
@@ -67,9 +66,8 @@ module ActiveRecordHostPool
67
66
 
68
67
  private
69
68
 
70
- def select(*args)
71
- @cx.__send__(:select, *args)
69
+ def select(...)
70
+ @cx.__send__(:select, ...)
72
71
  end
73
- ruby2_keywords :select if respond_to?(:ruby2_keywords, true)
74
72
  end
75
73
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecordHostPool
4
- VERSION = "2.0.0"
4
+ VERSION = "2.2.0"
5
5
  end
@@ -15,7 +15,11 @@ if Gem.loaded_specs.include?("mysql2")
15
15
  ActiveRecordHostPool.loaded_db_adapter = :mysql2
16
16
  elsif Gem.loaded_specs.include?("trilogy")
17
17
  require "trilogy"
18
- require "activerecord-trilogy-adapter" if ActiveRecord.version < Gem::Version.new("7.1")
18
+ if ActiveRecord.version < Gem::Version.new("7.1")
19
+ require "activerecord-trilogy-adapter"
20
+ require "trilogy_adapter/version"
21
+ raise "ActiveRecordHostPool is only compatible with activerecord-trilogy-adapter v3.1+" if Gem::Version.new("3.1") > TrilogyAdapter::VERSION
22
+ end
19
23
  ActiveRecordHostPool.loaded_db_adapter = :trilogy
20
24
  end
21
25
 
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: 2.0.0
4
+ version: 2.2.0
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: 2024-01-08 00:00:00.000000000 Z
14
+ date: 2024-07-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activerecord
@@ -20,9 +20,6 @@ dependencies:
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 6.1.0
23
- - - "<"
24
- - !ruby/object:Gem::Version
25
- version: '7.2'
26
23
  type: :runtime
27
24
  prerelease: false
28
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -30,9 +27,6 @@ dependencies:
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 6.1.0
33
- - - "<"
34
- - !ruby/object:Gem::Version
35
- version: '7.2'
36
30
  description: ''
37
31
  email:
38
32
  - bquorning@zendesk.com
@@ -65,14 +59,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
59
  requirements:
66
60
  - - ">="
67
61
  - !ruby/object:Gem::Version
68
- version: 2.7.0
62
+ version: 3.1.0
69
63
  required_rubygems_version: !ruby/object:Gem::Requirement
70
64
  requirements:
71
65
  - - ">="
72
66
  - !ruby/object:Gem::Version
73
67
  version: '0'
74
68
  requirements: []
75
- rubygems_version: 3.0.3.1
69
+ rubygems_version: 3.5.11
76
70
  signing_key:
77
71
  specification_version: 4
78
72
  summary: Allow ActiveRecord to share a connection to multiple databases on the same