module NewRelic::Agent::Instrumentation::RackHelpers
Attributes
_nr_deferred_detection_ran[RW]
Public Class Methods
check_for_late_instrumentation(app)
click to toggle source
# File lib/new_relic/agent/instrumentation/rack.rb, line 80 def self.check_for_late_instrumentation(app) return if @checked_for_late_instrumentation @checked_for_late_instrumentation = true if middleware_instrumentation_enabled? if ::NewRelic::Agent::Instrumentation::MiddlewareProxy.needs_wrapping?(app) ::NewRelic::Agent.logger.info("We weren't able to instrument all of your Rack middlewares.", "To correct this, ensure you 'require \"newrelic_rpm\"' before setting up your middleware stack.") end end end
instrument_builder(builder_class)
click to toggle source
# File lib/new_relic/agent/instrumentation/rack.rb, line 91 def self.instrument_builder builder_class ::NewRelic::Agent.logger.info "Installing deferred #{builder_class} instrumentation" builder_class.class_eval do class << self attr_accessor :_nr_deferred_detection_ran end self._nr_deferred_detection_ran = false include ::NewRelic::Agent::Instrumentation::RackBuilder alias_method :to_app_without_newrelic, :to_app alias_method :to_app, :to_app_with_newrelic_deferred_dependency_detection if ::NewRelic::Agent::Instrumentation::RackHelpers.middleware_instrumentation_enabled? ::NewRelic::Agent.logger.info "Installing #{builder_class} middleware instrumentation" alias_method :run_without_newrelic, :run alias_method :run, :run_with_newrelic alias_method :use_without_newrelic, :use alias_method :use, :use_with_newrelic end end def self.instrument_url_map url_map_class url_map_class.class_eval do alias_method :initialize_without_newrelic, :initialize def initialize(map = {}) traced_map = ::NewRelic::Agent::Instrumentation::RackURLMap.generate_traced_map(map) initialize_without_newrelic(traced_map) end end end end
instrument_url_map(url_map_class)
click to toggle source
# File lib/new_relic/agent/instrumentation/rack.rb, line 115 def self.instrument_url_map url_map_class url_map_class.class_eval do alias_method :initialize_without_newrelic, :initialize def initialize(map = {}) traced_map = ::NewRelic::Agent::Instrumentation::RackURLMap.generate_traced_map(map) initialize_without_newrelic(traced_map) end end end
middleware_instrumentation_enabled?()
click to toggle source
# File lib/new_relic/agent/instrumentation/rack.rb, line 76 def self.middleware_instrumentation_enabled? version_supported? && !::NewRelic::Agent.config[:disable_middleware_instrumentation] end
new(map = {})
click to toggle source
# File lib/new_relic/agent/instrumentation/rack.rb, line 119 def initialize(map = {}) traced_map = ::NewRelic::Agent::Instrumentation::RackURLMap.generate_traced_map(map) initialize_without_newrelic(traced_map) end
puma_rack_version_supported?()
click to toggle source
# File lib/new_relic/agent/instrumentation/rack.rb, line 68 def self.puma_rack_version_supported? return false unless defined? ::Puma::Const::PUMA_VERSION version = ::NewRelic::VersionNumber.new(::Puma::Const::PUMA_VERSION) min_version = ::NewRelic::VersionNumber.new('2.12.0') version >= min_version end
rack_version_supported?()
click to toggle source
# File lib/new_relic/agent/instrumentation/rack.rb, line 60 def self.rack_version_supported? return false unless defined? ::Rack version = ::NewRelic::VersionNumber.new(::Rack.release) min_version = ::NewRelic::VersionNumber.new('1.1.0') version >= min_version end
version_supported?()
click to toggle source
# File lib/new_relic/agent/instrumentation/rack.rb, line 56 def self.version_supported? rack_version_supported? || puma_rack_version_supported? end