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