Skip to content

Commit 836adea

Browse files
committed
Start measuring request sooner when it reaches the Rails engine
1 parent 36f9139 commit 836adea

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

lib/rorvswild/plugin/middleware.rb

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
module RorVsWild
44
module Plugin
5-
class Middleware
5+
module Middleware
66
module RequestQueueTime
77

88
ACCEPTABLE_HEADERS = [
@@ -49,24 +49,19 @@ def parse_timestamp(timestamp)
4949
@installed = false
5050

5151
def self.setup(agent)
52-
return if @installed
53-
Rails.application.config.middleware.unshift(RorVsWild::Plugin::Middleware, nil) if defined?(Rails)
52+
return if @installed || !defined?(Rails::Engine)
53+
Rails::Engine.prepend(self)
5454
@installed = true
5555
end
5656

57-
def initialize(app, config)
58-
@app, @config = app, config
59-
end
60-
6157
def call(env)
6258
execution = RorVsWild::Execution::Request.new(env["ORIGINAL_FULLPATH"])
6359
execution.add_queue_time(calculate_queue_time(env))
6460
RorVsWild.agent.start_execution(execution)
6561
section = RorVsWild::Section.start
66-
section.file, section.line = rails_engine_location
62+
section.file, section.line = method(:call).super_method.source_location
6763
section.commands << "Rails::Engine#call"
68-
code, headers, body = @app.call(env)
69-
[code, headers, body]
64+
super
7065
ensure
7166
RorVsWild::Section.stop
7267
RorVsWild.agent.stop_execution

test/plugin/middleware_test.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,15 @@ def unix_timestamp_seconds
5252
Time.now.to_f
5353
end
5454

55+
class App
56+
def call(env)
57+
end
58+
59+
prepend(RorVsWild::Plugin::Middleware)
60+
end
61+
5562
def middleware
5663
agent # Load agent
57-
app = mock(call: nil)
58-
middleware = RorVsWild::Plugin::Middleware.new(app, nil)
59-
middleware.stubs(rails_engine_location: ["/rails/lib/engine.rb", 12])
60-
middleware
64+
App.new
6165
end
6266
end

0 commit comments

Comments
 (0)