aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/middleware/stack.rb
diff options
context:
space:
mode:
authorRafael França <rafaelmfranca@gmail.com>2019-05-08 17:00:35 -0400
committerGitHub <noreply@github.com>2019-05-08 17:00:35 -0400
commitdd868aa0c82ab45d1ca21febf179bb5cd1c21766 (patch)
tree866b93d0aa56cf3fcca33ecf92b215f1ddc1393b /actionpack/lib/action_dispatch/middleware/stack.rb
parent52125dc0f8669d8dd497427c7b177d5d04106e0c (diff)
parent6f549ce53f3398403d4c2a47f9ecba910be256dd (diff)
downloadrails-dd868aa0c82ab45d1ca21febf179bb5cd1c21766.tar.gz
rails-dd868aa0c82ab45d1ca21febf179bb5cd1c21766.tar.bz2
rails-dd868aa0c82ab45d1ca21febf179bb5cd1c21766.zip
Merge pull request #36221 from jhawthorn/middleware_instrumentation
Only build middleware proxy when instrumentating
Diffstat (limited to 'actionpack/lib/action_dispatch/middleware/stack.rb')
-rw-r--r--actionpack/lib/action_dispatch/middleware/stack.rb15
1 files changed, 13 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/stack.rb b/actionpack/lib/action_dispatch/middleware/stack.rb
index f0c869fba0..57e4adb457 100644
--- a/actionpack/lib/action_dispatch/middleware/stack.rb
+++ b/actionpack/lib/action_dispatch/middleware/stack.rb
@@ -34,7 +34,11 @@ module ActionDispatch
end
def build(app)
- InstrumentationProxy.new(klass.new(app, *args, &block), inspect)
+ klass.new(app, *args, &block)
+ end
+
+ def build_instrumented(app)
+ InstrumentationProxy.new(build(app), inspect)
end
end
@@ -119,7 +123,14 @@ module ActionDispatch
end
def build(app = nil, &block)
- middlewares.freeze.reverse.inject(app || block) { |a, e| e.build(a) }
+ instrumenting = ActiveSupport::Notifications.notifier.listening?(InstrumentationProxy::EVENT_NAME)
+ middlewares.freeze.reverse.inject(app || block) do |a, e|
+ if instrumenting
+ e.build_instrumented(a)
+ else
+ e.build(a)
+ end
+ end
end
private