Module: SignalFx::Tracing::Instrumenter::Grape
- Defined in:
- lib/signalfx/tracing/instrumentation/grape.rb
Class Method Summary collapse
Class Method Details
.instrument(opts = {}) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/signalfx/tracing/instrumentation/grape.rb', line 12 def instrument(opts = {}) return if @instrumented begin require 'grape' rescue LoadError => error return end begin require 'grape/instrumentation' rescue LoadError => e puts e. return end tracer = opts.fetch(:tracer, OpenTracing.global_tracer) parent_span = opts.fetch(:parent_span, nil) ::Grape::Instrumentation.instrument(tracer: tracer, parent_span: parent_span) patch_middleware if !opts.fetch(:disable_patching, false) @instrumented = true end |
.patch_middleware ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/signalfx/tracing/instrumentation/grape.rb', line 37 def patch_middleware require 'rack/tracer' ::Grape::API.class_eval do if Gem::Version.new(::Grape::VERSION) >= Gem::Version.new('1.2.0') singleton_class.send(:alias_method, :initial_setup_original, :initial_setup) def self.initial_setup(base_instance_parent) initial_setup_original(base_instance_parent) base_instance_parent.insert(0, ::Rack::Tracer) if !base_instance_parent.middleware.any? { |m| m[2].to_s == 'Rack::Tracer'} end else singleton_class.send(:alias_method, :inherited_original, :inherited) def self.inherited(api) inherited_original(api) api.use(::Rack::Tracer) if !api.middleware.any? { |m| m[1].to_s == 'Rack::Tracer' } end end end # class_eval end |