Sha256: f1c2f7061a107c8448910c86e96108ba9c83ab0520990f8ff6f9b8f872f2f76d
Contents?: true
Size: 1.07 KB
Versions: 2
Compression:
Stored size: 1.07 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 || proc { true } 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pilfer-1.0.2 | lib/pilfer/middleware.rb |
pilfer-1.0.1 | lib/pilfer/middleware.rb |