Sha256: 58ee0d3eea3f145dd4fd11923b87d4f6310c52b2e018a2bf69264a7e2eff696a
Contents?: true
Size: 1.06 KB
Versions: 1
Compression:
Stored size: 1.06 KB
Contents
require 'pilfer/logger' require 'pilfer/profiler' module Pilfer class Middleware attr_accessor :app, :profiler, :file_matcher, :profile_guard def initialize(app, options = {}, &profile_guard) @app = app @profiler = options[:profiler] || default_profiler @file_matcher = options[:file_matcher] @profile_guard = profile_guard end def call(env) if profile_guard.call(env) run_profiler(request_description(env)) { app.call(env) } else app.call(env) end end def run_profiler(description, &downstream) if file_matcher profiler.profile_files_matching(file_matcher, description, :submit => :async, &downstream) else profiler.profile(description, :submit => :async, &downstream) end end def default_profiler reporter = Pilfer::Logger.new($stdout) Pilfer::Profiler.new(reporter) end def request_description(env) "#{env["REQUEST_METHOD"]} #{env["PATH_INFO"]}" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pilfer-1.0.0 | lib/pilfer/middleware.rb |