class ScoutApm::InstrumentManager
Attributes
context[R]
installed_instruments[R]
Public Class Methods
new(context)
click to toggle source
# File lib/scout_apm/instrument_manager.rb, line 7 def initialize(context) @context = context @installed_instruments = [] end
Public Instance Methods
install!()
click to toggle source
Loads the instrumention logic.
# File lib/scout_apm/instrument_manager.rb, line 13 def install! case framework when :rails then install_instrument(ScoutApm::Instruments::ActionControllerRails2) when :rails3_or_4 then install_instrument(ScoutApm::Instruments::ActionControllerRails3Rails4) install_instrument(ScoutApm::Instruments::RailsRouter) if config.value("detailed_middleware") install_instrument(ScoutApm::Instruments::MiddlewareDetailed) else install_instrument(ScoutApm::Instruments::MiddlewareSummary) end end install_instrument(ScoutApm::Instruments::ActionView) install_instrument(ScoutApm::Instruments::ActiveRecord) install_instrument(ScoutApm::Instruments::Moped) install_instrument(ScoutApm::Instruments::Mongoid) install_instrument(ScoutApm::Instruments::NetHttp) install_instrument(ScoutApm::Instruments::Typhoeus) install_instrument(ScoutApm::Instruments::HttpClient) install_instrument(ScoutApm::Instruments::Memcached) install_instrument(ScoutApm::Instruments::Redis) install_instrument(ScoutApm::Instruments::InfluxDB) install_instrument(ScoutApm::Instruments::Elasticsearch) install_instrument(ScoutApm::Instruments::Grape) rescue logger.warn "Exception loading instruments:" logger.warn $!.message logger.warn $!.backtrace end
skip_instrument?(instrument_klass)
click to toggle source
Allows users to skip individual instruments via the config file
# File lib/scout_apm/instrument_manager.rb, line 47 def skip_instrument?(instrument_klass) instrument_short_name = instrument_klass.name.split("::").last (config.value("disabled_instruments") || []).include?(instrument_short_name) end
Private Instance Methods
already_installed?(instrument_klass)
click to toggle source
# File lib/scout_apm/instrument_manager.rb, line 67 def already_installed?(instrument_klass) @installed_instruments.any? do |already_installed_instrument| instrument_klass === already_installed_instrument end end
config()
click to toggle source
# File lib/scout_apm/instrument_manager.rb, line 81 def config context.config end
framework()
click to toggle source
# File lib/scout_apm/instrument_manager.rb, line 85 def framework context.environment.framework end
install_instrument(instrument_klass)
click to toggle source
# File lib/scout_apm/instrument_manager.rb, line 54 def install_instrument(instrument_klass) return if already_installed?(instrument_klass) if skip_instrument?(instrument_klass) logger.info "Skipping Disabled Instrument: #{instrument_klass} - To re-enable, change `disabled_instruments` key in scout_apm.yml" return end instance = instrument_klass.new(context) @installed_instruments << instance instance.install end
logger()
click to toggle source
Lookup Helpers #
# File lib/scout_apm/instrument_manager.rb, line 77 def logger context.logger end