Class: Miniswitch::Group

Inherits:
Object
  • Object
show all
Defined in:
lib/miniswitch/group.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(switcher, group_name, parent) ⇒ Group

Returns a new instance of Group.



8
9
10
11
12
# File 'lib/miniswitch/group.rb', line 8

def initialize(switcher, group_name, parent)
  @switcher = switcher
  @group_name = group_name
  @parent = parent
end

Instance Attribute Details

#group_nameObject (readonly)

Returns the value of attribute group_name.



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

def group_name
  @group_name
end

#parentObject (readonly)

Returns the value of attribute parent.



4
5
6
# File 'lib/miniswitch/group.rb', line 4

def parent
  @parent
end

#switcherObject (readonly)

Returns the value of attribute switcher.



5
6
7
# File 'lib/miniswitch/group.rb', line 5

def switcher
  @switcher
end

Instance Method Details

#full_slugObject

:nodoc:



57
58
59
60
61
62
63
64
# File 'lib/miniswitch/group.rb', line 57

def full_slug
  @full_slug ||= begin
    s = @parent ? @parent.full_slug : @switcher.prefix_slug
    s << @group_name if @group_name

    s
  end
end

#get_bool(name, default = nil) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/miniswitch/group.rb', line 40

def get_bool(name, default=nil)
  @switcher.with_redis do |r|
    v = r.get(key_for(name))
    case v
    when 't'
      true
    when 'f'
      false
    when nil
      default
    else
      raise "Invalid value for bool: '#{v}'"
    end
  end
end

#get_bool!(name) ⇒ Object



33
34
35
36
37
38
# File 'lib/miniswitch/group.rb', line 33

def get_bool!(name)
  v = get_bool(name, nil)
  return v unless v == nil

  raise UndefinedValueError
end

#get_int(name, default = nil) ⇒ Object



26
27
28
29
30
31
# File 'lib/miniswitch/group.rb', line 26

def get_int(name, default=nil)
  @switcher.with_redis do |r|
    v = r.get(key_for(name))
    v ? Integer(v) : default
  end
end

#group(name) ⇒ Object



14
15
16
# File 'lib/miniswitch/group.rb', line 14

def group(name)
  Miniswitch::Group.new(@switcher, name, self)
end

#set_bool(name, value) ⇒ Object



18
19
20
# File 'lib/miniswitch/group.rb', line 18

def set_bool(name, value)
  set_value(name, value ? 't' : 'f', :bool)
end

#set_int(name, value) ⇒ Object



22
23
24
# File 'lib/miniswitch/group.rb', line 22

def set_int(name, value)
  set_value(name, Integer(value), :int)
end