Module: ConfigManager::Toggle

Defined in:
lib/config_manager/toggle.rb

Class Method Summary collapse

Class Method Details

.active?(test, challenge = nil) ⇒ Boolean

Returns:

  • (Boolean)


3
4
5
6
7
8
9
10
11
12
13
# File 'lib/config_manager/toggle.rb', line 3

def self.active?(test, challenge=nil)
  toggle_def = Toggles::Definition.new(test)
  return false unless toggle_def.type

  type_klass = toggle_def.type_class
  if challenge
    type_klass.active? toggle_def, challenge
   else
    type_klass.active? toggle_def
   end
end

.create(*args) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/config_manager/toggle.rb', line 23

def self.create(*args)
  toggle_hash = args.first

  toggle_def = Toggles::Definition.new(toggle_hash[:name])
  toggle_def.type = toggle_hash[:type]
  values = (toggle_hash[:type] == 'boolean') ? 
      toggle_hash[:formatted_acceptable_values] : 
      toggle_hash[:formatted_acceptable_values].gsub(/\s*,\s*/,',').split(',')
    toggle_def.acceptable_values = values

    toggle_def
end

.delete(name) ⇒ Object



36
37
38
39
# File 'lib/config_manager/toggle.rb', line 36

def self.delete(name)
    toggle = Toggles::Definition.new(name)
    toggle.delete
end

.from_yaml(path) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/config_manager/toggle.rb', line 41

def self.from_yaml(path)
  toggles = YAML::load(File.open(path))
  counts = [0, 0]
  toggles.each do |name, values|
    begin
      create({:name => name,
               :type => values['type'],
               :formatted_acceptable_values => values['acceptable_values']})
      counts[0] += 1
    rescue RuntimeError
      Rails.logger.error " Bad toggle definition. #{$!}"
      counts[1] += 1
    end
  end

  counts
end

.to_yaml(path) ⇒ Object



59
60
61
62
63
64
# File 'lib/config_manager/toggle.rb', line 59

def self.to_yaml(path)
  File.open(path, 'w') do |file|
    toggles_hash = Hash[toggles.map(&:to_hash).map{|t| [t.keys.first, t.values.first]}]
    YAML.dump(toggles_hash, file)
  end
end

.togglesObject



15
16
17
18
19
20
21
# File 'lib/config_manager/toggle.rb', line 15

def self.toggles
  toggle_defs = []
  $redis.keys("#{Toggles::Definition.prefix}*").each do |key|
    toggle_defs << Toggles::Definition.new(key.gsub(Toggles::Definition.prefix, ''))
  end
  toggle_defs
end