module NewRelic::Agent::Instrumentation::MonitoredFiber::Chain

Public Class Methods

instrument!() click to toggle source
# File lib/new_relic/agent/instrumentation/fiber/chain.rb, line 7
def self.instrument!
  ::Fiber.class_eval do
    include NewRelic::Agent::Instrumentation::MonitoredFiber

    alias_method(:initialize_without_new_relic, :initialize)

    if RUBY_VERSION < '2.7.0'
      def initialize(*_args, &block)
        traced_block = add_thread_tracing(&block)
        initialize_with_newrelic_tracing { initialize_without_new_relic(&traced_block) }
      end
    else
      def initialize(**kwargs, &block)
        traced_block = add_thread_tracing(&block)
        initialize_with_newrelic_tracing { initialize_without_new_relic(**kwargs, &traced_block) }
      end
    end
  end
end
new(*_args, &block) click to toggle source
# File lib/new_relic/agent/instrumentation/fiber/chain.rb, line 14
def initialize(*_args, &block)
  traced_block = add_thread_tracing(&block)
  initialize_with_newrelic_tracing { initialize_without_new_relic(&traced_block) }
end