lib/newrelic-grape/instrument.rb in newrelic-grape-1.4.1 vs lib/newrelic-grape/instrument.rb in newrelic-grape-2.0.0
- old
+ new
@@ -52,17 +52,26 @@
executes do
NewRelic::Agent.logger.debug 'Installing Grape instrumentation'
end
executes do
- ::Rack::Builder.class_eval do
- alias_method :origin_use, :use
+ NewRelic::Agent::Instrumentation::MiddlewareProxy.class_eval do
+ def self.needs_wrapping?(target)
+ (
+ !target.respond_to?(:_nr_has_middleware_tracing) &&
+ !is_sinatra_app?(target) &&
+ !target.is_a?(Proc)
+ )
+ end
+ end
- def use(middleware, *args, &block)
- if middleware == Grape::Middleware::Error
- use ::NewRelic::Agent::Instrumentation::Grape
- end
- origin_use(middleware, *args, &block)
+ ::Grape::Endpoint.class_eval do
+ alias_method :origin_build_middleware, :build_middleware
+
+ def build_middleware
+ b = origin_build_middleware
+ b.use ::NewRelic::Agent::Instrumentation::Grape
+ b
end
end
end
end