active_record_proxy_adapters 0.6.0 → 0.6.1

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: 7884786c370072543b8702a379b372ffa878e281e88e8e96ba603cec78a01523
4
- data.tar.gz: 80141eaa2a1e1bbd9c4eb985136140acf006c16e5749497a114574f809325e98
3
+ metadata.gz: d73a2213222b1689c5ff581f40e561974446e480355d582fca5daa04eccf9996
4
+ data.tar.gz: ee667c46d62816df1dafbe583cbe0503448097f30ebf7c6d37565fd6cb335779
5
5
  SHA512:
6
- metadata.gz: 7f89bd7a1edf1e8813a9b70610c0153603958b64dbcecd5a00cc506301819e774b45ff291b06cfe01d8f25d2db6763853cb2bac4462d98836c33fbada30231b5
7
- data.tar.gz: b7db70493adab591fd31c4294a630ff976e7cefac58a2e466f2e5cb6511102b1900054fbbc6d632a59cac8875f1f047d4ad0c78a5385f669987ec48bc8420651
6
+ metadata.gz: a0c1db04e45da543ff86f31a37b45a5f3c5a3e31d0c877cd7e0038f46d01207bf90124868dda9a89ce73a0701726e9c539a422ef53a6e3a9cac9f2304e20a4de
7
+ data.tar.gz: 1e7eeb8e61c753dd6ad8475a61c4625c90240cdf1d2cf544b40c215a34ec498df806e8403922728c579f5dc727ea5901ff9e81875a57a36fcb2f1fbb17ec4b08
@@ -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)
@@ -49,6 +49,10 @@ module ActiveRecordProxyAdapters
49
49
  active_record_version >= Gem::Version.new("7.0") && active_record_version < Gem::Version.new("8.0")
50
50
  end
51
51
 
52
+ def active_record_v7_0?
53
+ active_record_version >= Gem::Version.new("7.0") && active_record_version < Gem::Version.new("7.1")
54
+ end
55
+
52
56
  def active_record_v7_1_or_greater?
53
57
  active_record_version >= Gem::Version.new("7.1")
54
58
  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.6.0"
4
+ VERSION = "0.6.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_proxy_adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Cruz
@@ -103,6 +103,7 @@ files:
103
103
  - lib/active_record_proxy_adapters/railtie.rb
104
104
  - lib/active_record_proxy_adapters/sqlite3_proxy.rb
105
105
  - lib/active_record_proxy_adapters/synchronizable_configuration.rb
106
+ - lib/active_record_proxy_adapters/transactionable_proxy_a_r_70.rb
106
107
  - lib/active_record_proxy_adapters/trilogy_proxy.rb
107
108
  - lib/active_record_proxy_adapters/version.rb
108
109
  homepage: https://github.com/Nasdaq/active_record_proxy_adapters