lib/flipper.rb in flipper-0.6.3 vs lib/flipper.rb in flipper-0.7.0.beta1
- old
+ new
@@ -22,59 +22,72 @@
#
# Returns a Flipper::Group.
# Raises Flipper::DuplicateGroup if the group is already registered.
def self.register(name, &block)
group = Types::Group.new(name, &block)
- groups.add(group.name, group)
+ groups_registry.add(group.name, group)
group
rescue Registry::DuplicateKey
- raise DuplicateGroup, %Q{Group #{name.inspect} has already been registered}
+ raise DuplicateGroup, "Group #{name.inspect} has already been registered"
end
+ # Public: Returns a Set of registered Types::Group instances.
+ def self.groups
+ groups_registry.values.to_set
+ end
+
+ # Public: Returns a Set of symbols where each symbol is a registered
+ # group name. If you just want the names, this is more efficient than doing
+ # `Flipper.groups.map(&:name)`.
+ def self.group_names
+ groups_registry.keys.to_set
+ end
+
# Public: Clears the group registry.
#
# Returns nothing.
def self.unregister_groups
- groups.clear
+ groups_registry.clear
end
# Public: Check if a group exists
#
# Returns boolean
def self.group_exists?(name)
- self.groups.key?(name)
+ groups_registry.key?(name)
end
- # Internal: Fetches a group by name.
+ # Public: 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.
def self.group(name)
- groups.get(name)
+ groups_registry.get(name)
rescue Flipper::Registry::KeyNotFound => e
raise GroupNotRegistered, "Group #{e.key.inspect} has not been registered"
end
- # Internal: Registry of all groups.
- def self.groups
- @groups ||= Registry.new
+ # Internal: Registry of all groups_registry.
+ def self.groups_registry
+ @groups_registry ||= Registry.new
end
- # Internal: Change the groups registry.
- def self.groups=(registry)
- @groups = registry
+ # Internal: Change the groups_registry registry.
+ def self.groups_registry=(registry)
+ @groups_registry = registry
end
end
require 'flipper/adapter'
require 'flipper/dsl'
require 'flipper/errors'
require 'flipper/feature'
require 'flipper/gate'
require 'flipper/registry'
require 'flipper/type'
+require 'flipper/typecast'