Method: HeimdallApm::Agent#start

Defined in:
lib/heimdall_apm/agent.rb

#start(options = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/heimdall_apm/agent.rb', line 45

def start(options = {})
  return unless context.config.value('enabled')

  # TODO: use instruments manager
  require 'heimdall_apm/instruments/active_record'      if defined?(ActiveRecord)
  require 'heimdall_apm/instruments/action_controller'  if defined?(ActionController)
  require 'heimdall_apm/instruments/elasticsearch'      if defined?(Elasticsearch)

  if (options[:app])
    require 'heimdall_apm/instruments/middleware'
    # TODO: make the position configurable
    options[:app].config.middleware.insert_after Rack::Cors, HeimdallApm::Instruments::Middleware
  end

  # TODO: handle platform/webserver that don't handle this correctly
  at_exit { stop }

  context.started!
  @background_thread = Thread.new { background_run }
end