active_record_proxy_adapters 0.4.6 → 0.4.7

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: 4ed0b02df3f4b3700b42b1e89b4449470cec256cf2657276c9584aab3dc8165d
4
- data.tar.gz: e041a155d835a4a5f0919e8883fba2e863e68ec713c92e8759d362c22d667ac1
3
+ metadata.gz: bfb8746fdc07a5d8be73c0d9f49c0f1602705dc77d2f4a0d7fda5c4f7b5a9802
4
+ data.tar.gz: 217ca38e811ab142dfb14feff31cf049758d8e38bc99149d958ce7bf29bbb42a
5
5
  SHA512:
6
- metadata.gz: 0e41b26de72871a04777ecd533c2172531fa32d0718a641f640aab5b6eda0bc1adfa3b255fca31d0d961a25994bf51409e1c0cbd87044d77447be62dd779afde
7
- data.tar.gz: a6f0ede11a734a907999a597bc9d538742bc26830e1b4d9e0191fd7577e803c388a8c91220f4562c457f957c92dde5208defa2a0b0cd8d01a02fdddba00f2fb0
6
+ metadata.gz: 30a9e38fd88738fb2a7f56525a7c501fe65c29d4e86635ca0e82c4fa0c64a3101471b204a10426740337add1c85a13dbfe00815807cb14d42a64d0788150fe3d
7
+ data.tar.gz: 1a9ed7079d6f4369c3baf1718776a6880772bea01790aac15f27326966378950b06d22826fef14d45a5460cc21c2d999add646af125178986f9e53474ff2fa5b
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "active_record/tasks/mysql2_proxy_database_tasks"
4
- require "active_record/connection_adapters/mysql2_adapter"
5
3
  require "active_record_proxy_adapters/active_record_context"
6
4
  require "active_record_proxy_adapters/hijackable"
7
5
  require "active_record_proxy_adapters/mysql2_proxy"
6
+ require "active_record/connection_adapters/mysql2_adapter"
7
+ require "active_record/tasks/mysql2_proxy_database_tasks"
8
8
 
9
9
  module ActiveRecord
10
10
  module ConnectionAdapters
@@ -13,6 +13,12 @@ module ActiveRecord
13
13
  class Mysql2ProxyAdapter < Mysql2Adapter
14
14
  include ActiveRecordProxyAdapters::Hijackable
15
15
 
16
+ if ActiveRecordProxyAdapters::ActiveRecordContext.active_record_v7_0?
17
+ require "active_record_proxy_adapters/transactionable_proxy_a_r_70"
18
+
19
+ include ActiveRecordProxyAdapters::TransactionableProxyAR70
20
+ end
21
+
16
22
  ADAPTER_NAME = "Mysql2Proxy"
17
23
 
18
24
  delegate_to_proxy(*ActiveRecordProxyAdapters::ActiveRecordContext.hijackable_methods)
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "active_record/tasks/postgresql_proxy_database_tasks"
4
- require "active_record/connection_adapters/postgresql_adapter"
5
3
  require "active_record_proxy_adapters/active_record_context"
6
4
  require "active_record_proxy_adapters/hijackable"
7
5
  require "active_record_proxy_adapters/postgresql_proxy"
6
+ require "active_record/connection_adapters/postgresql_adapter"
7
+ require "active_record/tasks/postgresql_proxy_database_tasks"
8
8
 
9
9
  module ActiveRecord
10
10
  module ConnectionAdapters
@@ -13,6 +13,12 @@ module ActiveRecord
13
13
  class PostgreSQLProxyAdapter < PostgreSQLAdapter
14
14
  include ActiveRecordProxyAdapters::Hijackable
15
15
 
16
+ if ActiveRecordProxyAdapters::ActiveRecordContext.active_record_v7_0?
17
+ require "active_record_proxy_adapters/transactionable_proxy_a_r_70"
18
+
19
+ include ActiveRecordProxyAdapters::TransactionableProxyAR70
20
+ end
21
+
16
22
  ADAPTER_NAME = "PostgreSQLProxy"
17
23
 
18
24
  delegate_to_proxy(*ActiveRecordProxyAdapters::ActiveRecordContext.hijackable_methods)
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "active_record/tasks/trilogy_proxy_database_tasks"
4
- require "active_record/connection_adapters/trilogy_adapter"
5
3
  require "active_record_proxy_adapters/active_record_context"
6
4
  require "active_record_proxy_adapters/hijackable"
7
5
  require "active_record_proxy_adapters/trilogy_proxy"
6
+ require "active_record/connection_adapters/trilogy_adapter"
7
+ require "active_record/tasks/trilogy_proxy_database_tasks"
8
8
 
9
9
  module ActiveRecord
10
10
  module ConnectionAdapters
@@ -13,6 +13,12 @@ module ActiveRecord
13
13
  class TrilogyProxyAdapter < TrilogyAdapter
14
14
  include ActiveRecordProxyAdapters::Hijackable
15
15
 
16
+ if ActiveRecordProxyAdapters::ActiveRecordContext.active_record_v7_0?
17
+ require "active_record_proxy_adapters/transactionable_proxy_a_r_70"
18
+
19
+ include ActiveRecordProxyAdapters::TransactionableProxyAR70
20
+ end
21
+
16
22
  ADAPTER_NAME = "TrilogyProxy"
17
23
 
18
24
  delegate_to_proxy(*ActiveRecordProxyAdapters::ActiveRecordContext.hijackable_methods)
@@ -47,6 +47,10 @@ module ActiveRecordProxyAdapters
47
47
  active_record_version >= Gem::Version.new("7.0") && active_record_version < Gem::Version.new("8.0")
48
48
  end
49
49
 
50
+ def active_record_v7_0?
51
+ active_record_version >= Gem::Version.new("7.0") && active_record_version < Gem::Version.new("7.1")
52
+ end
53
+
50
54
  def active_record_v7_1_or_greater?
51
55
  active_record_version >= Gem::Version.new("7.1")
52
56
  end
@@ -52,8 +52,6 @@ module ActiveRecordProxyAdapters
52
52
  "_unproxied"
53
53
  end
54
54
 
55
- private
56
-
57
55
  def proxy_method_name_for(method_name)
58
56
  :"#{method_name}#{unproxied_method_suffix}"
59
57
  end
@@ -63,6 +61,10 @@ module ActiveRecordProxyAdapters
63
61
  def unproxied_method_suffix
64
62
  self.class.unproxied_method_suffix
65
63
  end
64
+
65
+ def proxy_method_name_for(method_name)
66
+ self.class.proxy_method_name_for(method_name)
67
+ end
66
68
  end
67
69
  end
68
70
  end
@@ -34,6 +34,7 @@ module ActiveRecordProxyAdapters
34
34
  WRITE_STATEMENT_MATCHERS = [
35
35
  /\ABEGIN/i,
36
36
  /\ACOMMIT/i,
37
+ /\AROLLBACK/i,
37
38
  /INSERT\s[\s\S]*INTO\s[\s\S]*/i,
38
39
  /UPDATE\s[\s\S]*/i,
39
40
  /DELETE\s[\s\S]*FROM\s[\s\S]*/i,
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecordProxyAdapters
4
+ module TransactionableProxyAR70 # rubocop:disable Style/Documentation
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ def begin_db_transaction # :nodoc:
9
+ bypass_proxy_or_else("BEGIN", "TRANSACTION") { super }
10
+ end
11
+
12
+ def commit_db_transaction # :nodoc:
13
+ bypass_proxy_or_else("COMMIT", "TRANSACTION") { super }
14
+ end
15
+
16
+ def exec_rollback_db_transaction # :nodoc:
17
+ bypass_proxy_or_else("ROLLBACK", "TRANSACTION") { super }
18
+ end
19
+
20
+ private
21
+
22
+ def bypass_proxy_or_else(*args)
23
+ method_name = proxy_method_name_for(:execute)
24
+
25
+ return public_send(method_name, *args) if respond_to?(method_name)
26
+
27
+ yield
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecordProxyAdapters
4
- VERSION = "0.4.6"
4
+ VERSION = "0.4.7"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_proxy_adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Cruz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-04-28 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activerecord
@@ -58,8 +58,8 @@ email:
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files:
61
- - README.md
62
61
  - LICENSE.txt
62
+ - README.md
63
63
  files:
64
64
  - LICENSE.txt
65
65
  - README.md
@@ -83,6 +83,7 @@ files:
83
83
  - lib/active_record_proxy_adapters/postgresql_proxy.rb
84
84
  - lib/active_record_proxy_adapters/primary_replica_proxy.rb
85
85
  - lib/active_record_proxy_adapters/railtie.rb
86
+ - lib/active_record_proxy_adapters/transactionable_proxy_a_r_70.rb
86
87
  - lib/active_record_proxy_adapters/trilogy_proxy.rb
87
88
  - lib/active_record_proxy_adapters/version.rb
88
89
  homepage: https://github.com/Nasdaq/active_record_proxy_adapters
@@ -108,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
109
  - !ruby/object:Gem::Version
109
110
  version: '0'
110
111
  requirements: []
111
- rubygems_version: 3.6.2
112
+ rubygems_version: 3.6.9
112
113
  specification_version: 4
113
114
  summary: Read replica proxy adapters for ActiveRecord!
114
115
  test_files: []