Class: Togls::FeatureToggleRegistry
- Inherits:
-
Object
- Object
- Togls::FeatureToggleRegistry
- Defined in:
- lib/togls/feature_toggle_registry.rb
Overview
Feature Toggle Registry
The Feature Toggle Registry conceptually houses a registry of toggles. It accomplishes this by technically housing a toggle repository, rule repository, and feature repository which is uses to store and retrieve the respective entities. This plays a significant portion in the primary DSL as well.
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
- #all ⇒ Object
- #expand(&block) ⇒ Object
- #feature(key, desc) ⇒ Object
- #get(key) ⇒ Object
-
#initialize ⇒ FeatureToggleRegistry
constructor
A new instance of FeatureToggleRegistry.
Constructor Details
#initialize ⇒ FeatureToggleRegistry
Returns a new instance of FeatureToggleRegistry.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/togls/feature_toggle_registry.rb', line 10 def initialize @toggle_repository_drivers = [ Togls::ToggleRepositoryDrivers::InMemoryDriver.new, Togls::ToggleRepositoryDrivers::EnvOverrideDriver.new] @feature_repository_drivers = [Togls::FeatureRepositoryDrivers::InMemoryDriver.new] @rule_repository_drivers = [Togls::RuleRepositoryDrivers::InMemoryDriver.new] @feature_repository = Togls::FeatureRepository.new( @feature_repository_drivers) @rule_repository = Togls::RuleRepository.new(@rule_repository_drivers) @toggle_repository = Togls::ToggleRepository.new( @toggle_repository_drivers, @feature_repository, @rule_repository) @rule_repository.store(Togls::Rules::Boolean.new(true)) @rule_repository.store(Togls::Rules::Boolean.new(false)) end |
Class Method Details
.create(&block) ⇒ Object
27 28 29 30 31 |
# File 'lib/togls/feature_toggle_registry.rb', line 27 def self.create(&block) feature_toggle_registry = new feature_toggle_registry.instance_eval(&block) feature_toggle_registry end |
Instance Method Details
#all ⇒ Object
53 54 55 |
# File 'lib/togls/feature_toggle_registry.rb', line 53 def all @toggle_repository.all end |
#expand(&block) ⇒ Object
33 34 35 36 |
# File 'lib/togls/feature_toggle_registry.rb', line 33 def (&block) instance_eval(&block) self end |
#feature(key, desc) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/togls/feature_toggle_registry.rb', line 38 def feature(key, desc) feature = Togls::Feature.new(key, desc) toggle = Togls::Toggle.new(feature) @toggle_repository.store(toggle) Togls::Toggler.new(@toggle_repository, toggle) end |
#get(key) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/togls/feature_toggle_registry.rb', line 45 def get(key) toggle = @toggle_repository.get(key.to_s) if toggle.is_a?(Togls::NullToggle) Togls.logger.warn("Feature identified by '#{key}' has not been defined") end toggle end |