class ElasticAPM::Instrumenter
def transaction(*args)
rubocop:disable Metrics/MethodLength, Metrics/AbcSize
def transaction(*args) unless config.instrument yield if block_given? return end if (transaction = current_transaction) yield transaction if block_given? return transaction end if args.last.is_a? Hash args.last[:sampled] = random_sample? else args.push(sampled: random_sample?) end transaction = Transaction.new self, *args self.current_transaction = transaction return transaction unless block_given? begin yield transaction ensure self.current_transaction = nil transaction.done end transaction end