Module: Flipper
- Defined in:
- lib/flipper.rb,
lib/flipper/dsl.rb,
lib/flipper/key.rb,
lib/flipper/gate.rb,
lib/flipper/type.rb,
lib/flipper/errors.rb,
lib/flipper/toggle.rb,
lib/flipper/adapter.rb,
lib/flipper/feature.rb,
lib/flipper/version.rb,
lib/flipper/registry.rb,
lib/flipper/gates/actor.rb,
lib/flipper/gates/group.rb,
lib/flipper/toggles/set.rb,
lib/flipper/types/actor.rb,
lib/flipper/types/group.rb,
lib/flipper/gates/boolean.rb,
lib/flipper/toggles/value.rb,
lib/flipper/types/boolean.rb,
lib/flipper/adapters/memory.rb,
lib/flipper/toggles/boolean.rb,
lib/flipper/types/percentage.rb,
lib/flipper/adapters/memoized.rb,
lib/flipper/instrumenters/noop.rb,
lib/flipper/instrumenters/memory.rb,
lib/flipper/middleware/local_cache.rb,
lib/flipper/adapters/operation_logger.rb,
lib/flipper/gates/percentage_of_actors.rb,
lib/flipper/gates/percentage_of_random.rb,
lib/flipper/types/percentage_of_actors.rb,
lib/flipper/types/percentage_of_random.rb,
lib/flipper/instrumentation/log_subscriber.rb,
lib/flipper/instrumentation/metriks_subscriber.rb
Defined Under Namespace
Modules: Adapters, Gates, Instrumentation, Instrumenters, Middleware, Toggles, Types Classes: Adapter, DSL, DuplicateGroup, Error, Feature, Gate, GateNotFound, GroupNotRegistered, Key, Registry, Toggle, Type
Constant Summary collapse
- InstrumentationNamespace =
Private: The namespace for all instrumented events.
:flipper
- VERSION =
"0.4.0"
Class Method Summary collapse
-
.group(name) ⇒ Object
Internal: Fetches a group by name.
-
.groups ⇒ Object
Internal: Registry of all groups.
-
.groups=(registry) ⇒ Object
Internal: Change the groups registry.
-
.new(adapter, options = {}) ⇒ Object
Public: Start here.
-
.register(name, &block) ⇒ Object
Public: Use this to register a group by name.
Class Method Details
.group(name) ⇒ Object
Internal: Fetches a group by name.
name - The Symbol name of the group.
Examples
Flipper.group(:admins)
Returns the Flipper::Group if group registered. Raises Flipper::GroupNotRegistered if group is not registered.
43 44 45 46 47 |
# File 'lib/flipper.rb', line 43 def self.group(name) groups.get(name) rescue Flipper::Registry::KeyNotFound => e raise GroupNotRegistered, "Group #{e.key.inspect} has not been registered" end |
.groups ⇒ Object
Internal: Registry of all groups.
50 51 52 |
# File 'lib/flipper.rb', line 50 def self.groups @groups ||= Registry.new end |
.groups=(registry) ⇒ Object
Internal: Change the groups registry.
55 56 57 |
# File 'lib/flipper.rb', line 55 def self.groups=(registry) @groups = registry end |
.new(adapter, options = {}) ⇒ Object
Public: Start here. Given an adapter returns a handy DSL to all the flipper goodness. To see supported options, check out dsl.rb.
7 8 9 |
# File 'lib/flipper.rb', line 7 def self.new(adapter, = {}) DSL.new(adapter, ) end |
.register(name, &block) ⇒ Object
Public: Use this to register a group by name.
name - The Symbol name of the group. block - The block that should be used to determine if the group matches a
given thing.
Examples
Flipper.registry(:admins) { |thing|
thing.respond_to?(:admin?) && thing.admin?
}
Returns a Flipper::Group. Raises Flipper::DuplicateGroup if the group is already registered.
25 26 27 28 29 30 31 |
# File 'lib/flipper.rb', line 25 def self.register(name, &block) group = Types::Group.new(name, &block) groups.add(group.name, group) group rescue Registry::DuplicateKey raise DuplicateGroup, %Q{Group #{name.inspect} has already been registered} end |