Class: FeatureRelease

Inherits:
Object
  • Object
show all
Defined in:
lib/feature_release.rb,
lib/feature_release/feature.rb,
lib/feature_release/version.rb

Defined Under Namespace

Classes: Feature

Constant Summary collapse

VERSION =
"0.0.1"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeFeatureRelease

Returns a new instance of FeatureRelease.



8
9
10
11
12
13
# File 'lib/feature_release.rb', line 8

def initialize
  @groups = {:all => lambda{|obj| true}}
  @features = Hash.new do |hash, missing_key|
                hash[missing_key] = Feature.new(missing_key)
              end
end

Instance Attribute Details

#featuresObject (readonly)

Returns the value of attribute features.



6
7
8
# File 'lib/feature_release.rb', line 6

def features
  @features
end

#groupsObject (readonly)

Returns the value of attribute groups.



6
7
8
# File 'lib/feature_release.rb', line 6

def groups
  @groups
end

Instance Method Details

#activate_feature(feature, group) ⇒ Object



19
20
21
# File 'lib/feature_release.rb', line 19

def activate_feature(feature, group)
  @features[feature.to_sym].add_group(group)
end

#active?(feature, user) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
# File 'lib/feature_release.rb', line 27

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) ⇒ Object



23
24
25
# File 'lib/feature_release.rb', line 23

def deactivate_feature(feature, group)
  @features[feature.to_sym].remove_group(group)
end

#define_group(name, &block) ⇒ Object



15
16
17
# File 'lib/feature_release.rb', line 15

def define_group(name, &block)
  @groups[name] = block
end