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'