Class: FeatureGuard::Guard

Inherits:
Object
  • Object
show all
Defined in:
lib/feature_guard/guard.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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_nameObject (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

#disableObject

binary flag methods (enabled/disabled)



9
10
11
# File 'lib/feature_guard/guard.rb', line 9

def disable
  redis.set(flag_key, 0)
end

#enableObject



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_valObject



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

#toggleObject



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

def toggle
  enabled? ? disable : enable
end