class Pliny::Middleware::Metrics

Public Class Methods

new(app) click to toggle source
# File lib/pliny/middleware/metrics.rb, line 3
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/pliny/middleware/metrics.rb, line 7
def call(env)
  start = Time.now

  Pliny::Metrics.count("requests")

  begin
    status, headers, body = @app.call(env)
  rescue
    status = 500
    raise
  ensure
    elapsed = (Time.now - start).to_f
    Pliny::Metrics.measure("requests.latency", value: elapsed)

    status_level = "#{status/100}xx"
    Pliny::Metrics.count("requests.status.#{status_level}")
  end

  [status, headers, body]
end