Class: FeatureRelease
- Inherits:
-
Object
- Object
- FeatureRelease
- 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
-
#features ⇒ Object
readonly
Returns the value of attribute features.
-
#groups ⇒ Object
readonly
Returns the value of attribute groups.
Instance Method Summary collapse
- #activate_feature(feature, group) ⇒ Object
- #active?(feature, user) ⇒ Boolean
- #deactivate_feature(feature, group) ⇒ Object
- #define_group(name, &block) ⇒ Object
-
#initialize ⇒ FeatureRelease
constructor
A new instance of FeatureRelease.
Constructor Details
#initialize ⇒ FeatureRelease
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
#features ⇒ Object (readonly)
Returns the value of attribute features.
6 7 8 |
# File 'lib/feature_release.rb', line 6 def features @features end |
#groups ⇒ Object (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
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 |