Class: FeatureGuard::Guard
- Inherits:
-
Object
- Object
- FeatureGuard::Guard
- Defined in:
- lib/feature_guard/guard.rb
Instance Attribute Summary collapse
-
#feature_name ⇒ Object
readonly
Returns the value of attribute feature_name.
Instance Method Summary collapse
-
#allow?(val = nil) ⇒ Boolean
ramp methods (0.0 .. 100.0).
- #bump_ramp(amount = 10.0) ⇒ Object
-
#disable ⇒ Object
binary flag methods (enabled/disabled).
- #enable ⇒ Object
- #enabled? ⇒ Boolean
-
#initialize(_feature_name) ⇒ Guard
constructor
A new instance of Guard.
- #ramp_val ⇒ Object
- #set_ramp(new_val) ⇒ Object
- #toggle ⇒ Object
Constructor Details
#initialize(_feature_name) ⇒ Guard
4 5 6 |
# File 'lib/feature_guard/guard.rb', line 4 def initialize(_feature_name) @feature_name = _feature_name end |
Instance Attribute Details
#feature_name ⇒ Object (readonly)
Returns the value of attribute feature_name.
2 3 4 |
# File 'lib/feature_guard/guard.rb', line 2 def feature_name @feature_name end |
Instance Method Details
#allow?(val = nil) ⇒ Boolean
ramp methods (0.0 .. 100.0)
28 29 30 31 |
# File 'lib/feature_guard/guard.rb', line 28 def allow?(val = nil) val = val.nil? ? random_val : hashed_val(val) val < ramp_val end |
#bump_ramp(amount = 10.0) ⇒ Object
33 34 35 |
# File 'lib/feature_guard/guard.rb', line 33 def bump_ramp(amount = 10.0) set_ramp(ramp_val + amount) end |
#disable ⇒ Object
binary flag methods (enabled/disabled)
9 10 11 |
# File 'lib/feature_guard/guard.rb', line 9 def disable redis.set(flag_key, 0) end |
#enable ⇒ Object
13 14 15 |
# File 'lib/feature_guard/guard.rb', line 13 def enable redis.set(flag_key, 1) end |
#enabled? ⇒ Boolean
17 18 19 20 21 |
# File 'lib/feature_guard/guard.rb', line 17 def enabled? redis.get(flag_key).tap { |v| return (!v.nil? && v.to_i > 0) } rescue false end |
#ramp_val ⇒ Object
37 38 39 |
# File 'lib/feature_guard/guard.rb', line 37 def ramp_val redis.get(ramp_key).to_f end |
#set_ramp(new_val) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/feature_guard/guard.rb', line 41 def set_ramp(new_val) new_val = new_val.to_f new_val = 100.0 if new_val > 100.0 new_val = 0.0 if new_val < 0.0 redis.set(ramp_key, new_val) new_val end |
#toggle ⇒ Object
23 24 25 |
# File 'lib/feature_guard/guard.rb', line 23 def toggle enabled? ? disable : enable end |