lib/flipper/middleware/setup_env.rb in flipper-0.19.1 vs lib/flipper/middleware/setup_env.rb in flipper-0.20.0.beta1

- old
+ new

@@ -5,11 +5,12 @@ # lazy initialization of the flipper instance being set in the env by # providing a block. # # app - The app this middleware is included in. # flipper_or_block - The Flipper::DSL instance or a block that yields a - # Flipper::DSL instance to use for all operations. + # Flipper::DSL instance to use for all operations + # (optional, default: Flipper). # # Examples # # flipper = Flipper.new(...) # @@ -17,21 +18,30 @@ # use Flipper::Middleware::SetupEnv, flipper # # # using with a block that yields a flipper instance # use Flipper::Middleware::SetupEnv, lambda { Flipper.new(...) } # - def initialize(app, flipper_or_block, options = {}) + # # using default configured Flipper instance + # Flipper.configure do |config| + # config.default { Flipper.new(...) } + # end + # use Flipper::Middleware::SetupEnv + def initialize(app, flipper_or_block = nil, options = {}) @app = app @env_key = options.fetch(:env_key, 'flipper') if flipper_or_block.respond_to?(:call) @flipper_block = flipper_or_block else - @flipper = flipper_or_block + @flipper = flipper_or_block || Flipper end end def call(env) + dup.call!(env) + end + + def call!(env) env[@env_key] ||= flipper @app.call(env) end private