Namespace

Class

Methods

Class Public methods

new(payload = {})

📝 Source code
# File activerecord/lib/active_record/connection_adapters/abstract/transaction.rb, line 80
      def initialize(payload = {})
        @handle = nil
        @started = false
        @payload = nil
        @base_payload = payload
      end
🔎 See on GitHub

Instance Public methods

finish(outcome)

📝 Source code
# File activerecord/lib/active_record/connection_adapters/abstract/transaction.rb, line 101
      def finish(outcome)
        raise InstrumentationNotStartedError.new("Called finish on a transaction that hasn't started") unless @started
        @started = false

        @payload[:outcome] = outcome
        @handle.finish
      end
🔎 See on GitHub

start()

📝 Source code
# File activerecord/lib/active_record/connection_adapters/abstract/transaction.rb, line 90
      def start
        raise InstrumentationAlreadyStartedError.new("Called start on an already started transaction") if @started
        @started = true

        ActiveSupport::Notifications.instrument("start_transaction.active_record", @base_payload)

        @payload = @base_payload.dup # We dup because the payload for a given event is mutated later to add the outcome.
        @handle = ActiveSupport::Notifications.instrumenter.build_handle("transaction.active_record", @payload)
        @handle.start
      end
🔎 See on GitHub