Sha256: 7b907e60f7a749abd946dcd5e9b115af5b6214b76c9f3a2d29d5f0a276dd0b3b

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

require 'active_record/connection_adapters/abstract/transaction'

module ActiveRecord
  module ConnectionAdapters

    module SQLServerTransaction

      private

      def sqlserver?
        connection.respond_to?(:sqlserver?) && connection.sqlserver?
      end

      def current_isolation_level
        return unless sqlserver?
        level = connection.user_options_isolation_level
        level.blank? ? 'READ COMMITTED' : level.upcase
      end

    end

    Transaction.include SQLServerTransaction

    module SQLServerRealTransaction

      attr_reader :starting_isolation_level

      def initialize(connection, options)
        @connection = connection
        @starting_isolation_level = current_isolation_level if options[:isolation]
        super
      end

      def commit
        super
        reset_starting_isolation_level
      end

      private

      def reset_starting_isolation_level
        if sqlserver? && starting_isolation_level
          connection.set_transaction_isolation_level(starting_isolation_level)
        end
      end

    end

    RealTransaction.include SQLServerRealTransaction

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activerecord-sqlserver-adapter-4.2.0 lib/active_record/connection_adapters/sqlserver/transaction.rb
activerecord-sqlserver-adapter-4.2.0.pre lib/active_record/connection_adapters/sqlserver/transaction.rb