class FeatureGuard::Guard
Attributes
feature_name[R]
Public Class Methods
new(_feature_name)
click to toggle source
# File lib/feature_guard/guard.rb, line 4 def initialize(_feature_name) @feature_name = _feature_name end
Public Instance Methods
allow?(val = nil)
click to toggle source
ramp methods (0.0 .. 100.0)
# 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)
click to toggle source
# File lib/feature_guard/guard.rb, line 33 def bump_ramp(amount = 10.0) set_ramp(ramp_val + amount) end
disable()
click to toggle source
binary flag methods (enabled/disabled)
# File lib/feature_guard/guard.rb, line 9 def disable redis.hset(FeatureGuard.flags_hkey, feature_name, 0) end
enable()
click to toggle source
# File lib/feature_guard/guard.rb, line 13 def enable redis.hset(FeatureGuard.flags_hkey, feature_name, 1) end
enabled?()
click to toggle source
# File lib/feature_guard/guard.rb, line 17 def enabled? redis.hget(FeatureGuard.flags_hkey, feature_name).tap { |v| return (!v.nil? && v.to_i > 0) } rescue false end
ramp_val()
click to toggle source
# File lib/feature_guard/guard.rb, line 37 def ramp_val redis.hget(FeatureGuard.ramps_hkey, feature_name).to_f end
set_ramp(new_val)
click to toggle source
# 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.hset(FeatureGuard.ramps_hkey, feature_name, new_val) new_val end
toggle()
click to toggle source
# File lib/feature_guard/guard.rb, line 23 def toggle enabled? ? disable : enable end
Private Instance Methods
hashed_val(s)
click to toggle source
# File lib/feature_guard/guard.rb, line 52 def hashed_val(s) (Digest::MD5.hexdigest("#{feature_name}_#{s}").to_i(16) % 10000).to_f / 100.0 end
random_val()
click to toggle source
# File lib/feature_guard/guard.rb, line 56 def random_val rand * 100.0 end
redis()
click to toggle source
# File lib/feature_guard/guard.rb, line 60 def redis FeatureGuard.redis end