class FeatureRelease
Constants
- VERSION
Attributes
features[R]
groups[R]
Public Class Methods
new(storage=nil)
click to toggle source
# File lib/feature_release.rb, line 9 def initialize(storage=nil) @groups = {:all => lambda{|obj| true}} @features = Hash.new do |hash, missing_key| hash[missing_key] = Feature.new(missing_key) end set_storage(storage) if storage end
Public Instance Methods
activate_feature(feature, group)
click to toggle source
# File lib/feature_release.rb, line 21 def activate_feature(feature, group) @features[feature.to_sym].add_group(group) end
active?(feature, user)
click to toggle source
# File lib/feature_release.rb, line 29 def active?(feature, user) return false if @features[feature.to_sym].groups.empty? @features[feature.to_sym].groups.all? {|group| groups[group].call(user)} end
deactivate_feature(feature, group)
click to toggle source
# File lib/feature_release.rb, line 25 def deactivate_feature(feature, group) @features[feature.to_sym].remove_group(group) end
define_group(name, &block)
click to toggle source
# File lib/feature_release.rb, line 17 def define_group(name, &block) @groups[name] = block end
persisted?(feature)
click to toggle source
# File lib/feature_release.rb, line 34 def persisted?(feature) !(@storage.get(@features[feature.to_sym].name).nil?) end
save()
click to toggle source
# File lib/feature_release.rb, line 38 def save @features.each{|key, value| @storage.save(value.name, value.to_string)} end
Private Instance Methods
set_storage(storage)
click to toggle source
# File lib/feature_release.rb, line 44 def set_storage(storage) @storage = storage @storage.get_all.each do |feature_name| @features[feature_name.to_sym] = Feature.new(feature_name, @storage.get(feature_name)) end end