跳至内容 跳至搜索
命名空间
方法
F
N
S

类公共方法

new(payload = {})

# 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

实例公共方法

finish(outcome)

# 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

start()

# 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