class OneApm::Rack::MiddlewareWrapper
Attributes
category[R]
target[R]
transaction_options[R]
Public Class Methods
is_sinatra_app?(target)
click to toggle source
# File lib/one_apm/rack/middleware_wrapper.rb, line 30 def is_sinatra_app?(target) defined?(::Sinatra::Base) && target.kind_of?(::Sinatra::Base) end
needs_wrapping?(target)
click to toggle source
# File lib/one_apm/rack/middleware_wrapper.rb, line 38 def needs_wrapping?(target) !target.respond_to?(:_oa_has_middleware_tracing) && !is_sinatra_app?(target) end
new(target, is_app = false)
click to toggle source
# File lib/one_apm/rack/middleware_wrapper.rb, line 55 def initialize(target, is_app = false) @target = target @is_app = is_app @category = determine_category @target_class_name = determine_class_name @transaction_name = "#{determine_prefix}#{@target_class_name}/call" @transaction_options = { :transaction_name => @transaction_name } end
wrap(target, is_app = false)
click to toggle source
# File lib/one_apm/rack/middleware_wrapper.rb, line 43 def wrap(target, is_app = false) if needs_wrapping?(target) self.new(target, is_app) else target end end
wrap_class(target_class)
click to toggle source
# File lib/one_apm/rack/middleware_wrapper.rb, line 34 def wrap_class(target_class) MiddlewareClassWrapper.new(target_class) end
Public Instance Methods
determine_category()
click to toggle source
# File lib/one_apm/rack/middleware_wrapper.rb, line 66 def determine_category @is_app ? :rack : :middleware end
determine_class_name()
click to toggle source
In 'normal' usage, the target will be an application instance that responds to call
. With Rails, however, the target may be a subclass of Rails::Application that defines a method_missing that proxies call
to a singleton instance of the the subclass. We need to ensure that we capture the correct name in both cases.
# File lib/one_apm/rack/middleware_wrapper.rb, line 83 def determine_class_name if @target.is_a?(Class) @target.name else @target.class.name end end
determine_prefix()
click to toggle source
# File lib/one_apm/rack/middleware_wrapper.rb, line 70 def determine_prefix OneApm::TransactionNamer.prefix_for_category(nil, @category) end
middleware_ignore?()
click to toggle source
# File lib/one_apm/rack/middleware_wrapper.rb, line 74 def middleware_ignore? defined?(::Rails) && OneApm::Manager.config[:disable_rails_middleware] && @transaction_name =~ /Middleware/ end