Sha256: d1e891cc11e3beb10c25e4058f9877f2b2de6fbca0dfbe85aafc9ecdcfea1a5b

Contents?: true

Size: 1.79 KB

Versions: 26

Compression:

Stored size: 1.79 KB

Contents

module Flipper
  class Configuration
    def initialize(options = {})
      @default = -> { Flipper.new(adapter) }
      @adapter = -> { Flipper::Adapters::Memory.new }
    end

    # The default adapter to use.
    #
    # Pass a block to assign the adapter, and invoke without a block to
    # return the configured adapter instance.
    #
    #   Flipper.configure do |config|
    #     config.adapter # => instance of default Memory adapter
    #
    #     # Configure it to use the ActiveRecord adapter
    #     config.adapter do
    #       require "flipper/adapters/active_record"
    #       Flipper::Adapters::ActiveRecord.new
    #     end
    #
    #     config.adapter # => instance of ActiveRecord adapter
    #  end
    #
    def adapter(&block)
      if block_given?
        @adapter = block
      else
        @adapter.call
      end
    end

    # Controls the default instance for flipper. When used with a block it
    # assigns a new default block to use to generate an instance. When used
    # without a block, it performs a block invocation and returns the result.
    #
    #   configuration = Flipper::Configuration.new
    #   configuration.default # => Flipper::DSL instance using Memory adapter
    #
    #   # sets the default block to generate a new instance using ActiveRecord adapter
    #   configuration.default do
    #     require "flipper/adapters/active_record"
    #     Flipper.new(Flipper::Adapters::ActiveRecord.new)
    #   end
    #
    #   configuration.default # => Flipper::DSL instance using ActiveRecord adapter
    #
    # Returns result of default block invocation if called without block. If
    # called with block, assigns the default block.
    def default(&block)
      if block_given?
        @default = block
      else
        @default.call
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
flipper-1.0.0 lib/flipper/configuration.rb
flipper-1.0.0.pre lib/flipper/configuration.rb
flipper-0.28.3 lib/flipper/configuration.rb
flipper-0.28.2 lib/flipper/configuration.rb
flipper-0.28.1 lib/flipper/configuration.rb
flipper-0.28.0 lib/flipper/configuration.rb
flipper-0.27.1 lib/flipper/configuration.rb
flipper-0.27.0 lib/flipper/configuration.rb
flipper-0.26.2 lib/flipper/configuration.rb
flipper-0.26.1 lib/flipper/configuration.rb
flipper-0.26.0 lib/flipper/configuration.rb
flipper-0.26.0.rc2 lib/flipper/configuration.rb
flipper-0.26.0.rc1 lib/flipper/configuration.rb
flipper-0.25.4 lib/flipper/configuration.rb
flipper-0.25.3 lib/flipper/configuration.rb
flipper-0.25.2 lib/flipper/configuration.rb
flipper-0.25.1 lib/flipper/configuration.rb
flipper-0.25.0 lib/flipper/configuration.rb
flipper-0.24.1 lib/flipper/configuration.rb
flipper-0.24.0 lib/flipper/configuration.rb