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)
-
(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