diff --git a/lib/stackprof/middleware.rb b/lib/stackprof/middleware.rb index 8bad8e35..a1756ad9 100644 --- a/lib/stackprof/middleware.rb +++ b/lib/stackprof/middleware.rb @@ -15,8 +15,8 @@ def initialize(app, options = {}) end def call(env) - enabled = Middleware.enabled?(env) - StackProf.start(mode: Middleware.mode, interval: Middleware.interval) if enabled + enabled, mode = Middleware.enabled? + StackProf.start(mode: mode || Middleware.mode, interval: Middleware.interval) if enabled @app.call(env) ensure if enabled @@ -31,9 +31,9 @@ def call(env) class << self attr_accessor :enabled, :mode, :interval, :path - def enabled?(env) + def enabled? if enabled.respond_to?(:call) - enabled.call(env) + enabled.call else enabled end diff --git a/stackprof.gemspec b/stackprof.gemspec index 9a77f037..02439825 100644 --- a/stackprof.gemspec +++ b/stackprof.gemspec @@ -1,6 +1,6 @@ Gem::Specification.new do |s| s.name = 'stackprof' - s.version = '0.2.6' + s.version = '0.2.7' s.homepage = 'http://github.com/tmm1/stackprof' s.authors = 'Aman Gupta' diff --git a/test/test_middleware.rb b/test/test_middleware.rb index 7c15bb2b..3b044636 100644 --- a/test/test_middleware.rb +++ b/test/test_middleware.rb @@ -39,25 +39,25 @@ def test_save_custom end def test_enabled_should_use_a_proc_if_passed - env = {} - StackProf::Middleware.new(Object.new, enabled: Proc.new{ false }) - refute StackProf::Middleware.enabled?(env) + refute StackProf::Middleware.enabled? StackProf::Middleware.new(Object.new, enabled: Proc.new{ true }) - assert StackProf::Middleware.enabled?(env) + assert StackProf::Middleware.enabled? end - def test_enabled_should_use_a_proc_if_passed_and_use_the_request_env - enable_proc = Proc.new {|env| env['PROFILE'] } + def test_enabled_should_override_mode_if_a_proc + proc_called = false + middleware = StackProf::Middleware.new(proc {|env| proc_called = true}, enabled: Proc.new{ [true, 'foo'] }) + enabled, mode = StackProf::Middleware.enabled? + assert enabled + assert_equal 'foo', mode - env = Hash.new { false } - StackProf::Middleware.new(Object.new, enabled: enable_proc) - refute StackProf::Middleware.enabled?(env) + StackProf.expects(:start).with({mode: 'foo', interval: StackProf::Middleware.interval}) + StackProf.expects(:stop) - env = Hash.new { true} - StackProf::Middleware.new(Object.new, enabled: enable_proc) - assert StackProf::Middleware.enabled?(env) + middleware.call(nil) + assert proc_called end end