Sha256: 88958232646ee75af7ad2556483fec8bf8999ed2660234fc12026da3584bc593

Contents?: true

Size: 1.56 KB

Versions: 46

Compression:

Stored size: 1.56 KB

Contents

module Flipper
  module Middleware
    class SetupEnv
      # Public: Initializes an instance of the SetupEnv middleware. Allows for
      # 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
      #                    (optional, default: Flipper).
      #
      # Examples
      #
      #   flipper = Flipper.new(...)
      #
      #   # using with a normal flipper instance
      #   use Flipper::Middleware::SetupEnv, flipper
      #
      #   # using with a block that yields a flipper instance
      #   use Flipper::Middleware::SetupEnv, lambda { Flipper.new(...) }
      #
      #   # 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
        end
      end

      def call(env)
        dup.call!(env)
      end

      def call!(env)
        env[@env_key] ||= flipper
        @app.call(env)
      end

      private

      def flipper
        @flipper ||= @flipper_block.call
      end
    end
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
flipper-1.3.2 lib/flipper/middleware/setup_env.rb
flipper-1.3.1 lib/flipper/middleware/setup_env.rb
flipper-1.3.0 lib/flipper/middleware/setup_env.rb
flipper-1.3.0.pre lib/flipper/middleware/setup_env.rb
flipper-1.2.2 lib/flipper/middleware/setup_env.rb
flipper-1.2.1 lib/flipper/middleware/setup_env.rb
flipper-1.2.0 lib/flipper/middleware/setup_env.rb
flipper-1.1.2 lib/flipper/middleware/setup_env.rb
flipper-1.1.1 lib/flipper/middleware/setup_env.rb
flipper-1.1.0 lib/flipper/middleware/setup_env.rb
flipper-1.0.0 lib/flipper/middleware/setup_env.rb
flipper-1.0.0.pre lib/flipper/middleware/setup_env.rb
flipper-0.28.3 lib/flipper/middleware/setup_env.rb
flipper-0.28.2 lib/flipper/middleware/setup_env.rb
flipper-0.28.1 lib/flipper/middleware/setup_env.rb
flipper-0.28.0 lib/flipper/middleware/setup_env.rb
flipper-0.27.1 lib/flipper/middleware/setup_env.rb
flipper-0.27.0 lib/flipper/middleware/setup_env.rb
flipper-0.26.2 lib/flipper/middleware/setup_env.rb
flipper-0.26.1 lib/flipper/middleware/setup_env.rb