module ElasticAPM::Rails

def attach_subscriber(agent)

def attach_subscriber(agent)
  return unless agent
  agent.instrumenter.subscriber = ElasticAPM::Subscriber.new(agent)
end

def should_skip?(_config)

def should_skip?(_config)
  if ::Rails.const_defined?('Console', false)
    return 'Rails console'
  end
  nil
end

def start(config)

Returns:
  • (true, nil) - true if the agent was started, nil otherwise.

Parameters:
  • config (Config, Hash) -- An instance of Config or a Hash config.
def start(config)
  config = Config.new(config) unless config.is_a?(Config)
  if (reason = should_skip?(config))
    unless config.disable_start_message?
      config.logger.info "Skipping because: #{reason}. " \
        "Start manually with `ElasticAPM.start'"
    end
    return
  end
  ElasticAPM.start(config).tap do |agent|
    attach_subscriber(agent)
  end
  ElasticAPM.running?
rescue StandardError => e
  if config.disable_start_message?
    config.logger.error format('Failed to start: %s', e.message)
    config.logger.debug "Backtrace:\n" + e.backtrace.join("\n")
  else
    puts format('Failed to start: %s', e.message)
    puts "Backtrace:\n" + e.backtrace.join("\n")
  end
end