class FeatureToggles::Mechatronic
Constants
- POSSIBLE_ENABLING_VALUES
Which env variables should be considered truthy
Attributes
env_prefix[R]
features[R]
Public Class Methods
new(definition_file_paths = nil, &block)
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 13 def initialize(definition_file_paths = nil, &block) @features = {} definition_file_paths&.each do |file| instance_eval(File.read(file), file) end instance_eval(&block) if block end
Public Instance Methods
each() { |f| ... }
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 57 def each if block_given? features.values.each { |f| yield f } else features.values.to_enum end end
enabled?(feature, *args, **kwargs)
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 37 def enabled?(feature, *args, **kwargs) enabled_globally?(feature) || !!features.fetch(feature).resolver.call(*args, **kwargs) end
env(val)
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 23 def env(val) @env_prefix = val end
feature(name, **metadata, &block)
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 27 def feature(name, **metadata, &block) raise(ArgumentError, "Flag #{name} already exists") if @features.key?(name) features[name] = Feature.new(name, block, **metadata) end
for(*args, **kwargs)
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 41 def for(*args, **kwargs) Proxy.new(self, *args, **kwargs) end
names()
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 33 def names features.keys end
to_a(*args, **kwargs)
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 45 def to_a(*args, **kwargs) names.map do |feature| {feature: feature, enabled: enabled?(feature, *args, **kwargs)} end end
to_h(*args, **kwargs)
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 51 def to_h(*args, **kwargs) features.map do |feature, _| [feature, enabled?(feature, *args, **kwargs)] end.to_h end
Private Instance Methods
enabled_globally?(feature)
click to toggle source
# File lib/feature_toggles/mechatronic.rb, line 69 def enabled_globally?(feature) env_prefix && POSSIBLE_ENABLING_VALUES.include?(ENV["#{env_prefix}_#{feature.upcase}"]) end