Skip to content

Commit cf3a15f

Browse files
authored
Allow AbstractAdapter to detect sqlserver connection (#1111)
Allow AbstractAdapter to detect sqlserver connection Co-authored-by: Alexandre Overtus <[email protected]>
1 parent d1a3b1d commit cf3a15f

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# frozen_string_literal: true
2+
3+
module ActiveRecord
4+
module ConnectionAdapters
5+
module SQLServer
6+
module CoreExt
7+
module AbstractAdapter
8+
def sqlserver?
9+
false
10+
end
11+
end
12+
end
13+
end
14+
end
15+
end
16+
17+
ActiveSupport.on_load(:active_record) do
18+
mod = ActiveRecord::ConnectionAdapters::SQLServer::CoreExt::AbstractAdapter
19+
ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend(mod)
20+
end

lib/active_record/connection_adapters/sqlserver/transaction.rb

+4-6
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,12 @@
55
module ActiveRecord
66
module ConnectionAdapters
77
module SQLServerTransaction
8-
private
8+
delegate :sqlserver?, to: :connection, prefix: true
99

10-
def sqlserver?
11-
connection.respond_to?(:sqlserver?) && connection.sqlserver?
12-
end
10+
private
1311

1412
def current_isolation_level
15-
return unless sqlserver?
13+
return unless connection_sqlserver?
1614

1715
level = connection.user_options_isolation_level
1816
# When READ_COMMITTED_SNAPSHOT is set to ON,
@@ -50,7 +48,7 @@ def rollback
5048
private
5149

5250
def reset_starting_isolation_level
53-
if sqlserver? && starting_isolation_level
51+
if connection_sqlserver? && starting_isolation_level
5452
connection.set_transaction_isolation_level(starting_isolation_level)
5553
end
5654
end

lib/active_record/connection_adapters/sqlserver_adapter.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
require "active_record/connection_adapters/sqlserver/core_ext/attribute_methods"
1313
require "active_record/connection_adapters/sqlserver/core_ext/finder_methods"
1414
require "active_record/connection_adapters/sqlserver/core_ext/preloader"
15+
require "active_record/connection_adapters/sqlserver/core_ext/abstract_adapter"
1516
require "active_record/connection_adapters/sqlserver/version"
1617
require "active_record/connection_adapters/sqlserver/type"
1718
require "active_record/connection_adapters/sqlserver/database_limits"
@@ -100,7 +101,7 @@ def initialize(...)
100101
super
101102

102103
@config[:tds_version] = "7.3" unless @config[:tds_version]
103-
@config[:appname] = rails_application_name unless @config[:appname]
104+
@config[:appname] = self.class.rails_application_name unless @config[:appname]
104105
@config[:login_timeout] = @config[:login_timeout].present? ? @config[:login_timeout].to_i : nil
105106
@config[:timeout] = @config[:timeout].present? ? @config[:timeout].to_i / 1000 : nil
106107
@config[:encoding] = @config[:encoding].present? ? @config[:encoding] : nil

0 commit comments

Comments
 (0)