Class: RailsVitals::Middleware::PanelInjector
- Inherits:
-
Object
- Object
- RailsVitals::Middleware::PanelInjector
- Defined in:
- lib/rails_vitals/middleware/panel_injector.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ PanelInjector
constructor
A new instance of PanelInjector.
Constructor Details
#initialize(app) ⇒ PanelInjector
Returns a new instance of PanelInjector.
4 5 6 |
# File 'lib/rails_vitals/middleware/panel_injector.rb', line 4 def initialize(app) @app = app end |
Instance Method Details
#call(env) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rails_vitals/middleware/panel_injector.rb', line 8 def call(env) Thread.current[:rails_vitals_path] = env["PATH_INFO"] RailsVitals::Collector.current = RailsVitals::Collector.new status, headers, response = @app.call(env) return [ status, headers, response ] unless injectable?(headers, env) collector = RailsVitals::Collector.current scorer = Scorers::CompositeScorer.new(collector) record = RequestRecord.new(collector: collector, scorer: scorer) RailsVitals.store.push(record) if RailsVitals.config.store_enabled body = extract_body(response) body = inject_panel(body, collector, scorer) headers["Content-Length"] = body.bytesize.to_s [ status, headers, [ body ] ] ensure Thread.current[:rails_vitals_own_request] = nil RailsVitals::Collector.reset! end |