Class: ConfigManager::Toggles::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/config_manager/toggles/definition.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(test) ⇒ Definition

Returns a new instance of Definition.



5
6
7
# File 'lib/config_manager/toggles/definition.rb', line 5

def initialize(test)
  @key = key(test)
end

Class Method Details

.prefixObject



54
55
56
# File 'lib/config_manager/toggles/definition.rb', line 54

def self.prefix
  "#{Rails.application.class.parent_name.underscore}_toggles-"
end

.typesObject



50
51
52
# File 'lib/config_manager/toggles/definition.rb', line 50

def self.types
  %w(boolean set)
end

Instance Method Details

#acceptable_valuesObject



32
33
34
35
36
# File 'lib/config_manager/toggles/definition.rb', line 32

def acceptable_values
  @values ||= $redis.hget(@key, 'acceptable_values')
  #self.send("to_#{type}", @values)
  type_class.from_json(@values)
end

#acceptable_values=(values) ⇒ Object Also known as: formatted_acceptable_values=



38
39
40
41
42
43
44
# File 'lib/config_manager/toggles/definition.rb', line 38

def acceptable_values=(values)
  return unless valid?

  $redis.hset(@key, 'acceptable_values', type_class.to_json(values))
  #$redis.hset(@key, 'acceptable_values', self.send("to_#{type}", values))
  @values = $redis.hget(@key, 'acceptable_values')
end

#deleteObject



46
47
48
# File 'lib/config_manager/toggles/definition.rb', line 46

def delete
  $redis.del(@key)
end

#formatted_acceptable_valuesObject



69
70
71
72
# File 'lib/config_manager/toggles/definition.rb', line 69

def formatted_acceptable_values
  values = acceptable_values
  values.respond_to?(:join) ? values.join(',') : values
end

#messageObject



62
63
64
65
66
# File 'lib/config_manager/toggles/definition.rb', line 62

def message
  return "missing name" unless name.present?
  return "missing type" unless type.present?
  nil
end

#nameObject



9
10
11
# File 'lib/config_manager/toggles/definition.rb', line 9

def name
  @key.gsub(Definition.prefix, '')
end

#to_hashObject



78
79
80
# File 'lib/config_manager/toggles/definition.rb', line 78

def to_hash
  {name => {'type' => type, 'acceptable_values' => formatted_acceptable_values}}
end

#to_yamlObject



74
75
76
# File 'lib/config_manager/toggles/definition.rb', line 74

def to_yaml
  to_hash.to_yaml
end

#typeObject



13
14
15
# File 'lib/config_manager/toggles/definition.rb', line 13

def type
  @type ||= $redis.hget(@key, 'type')
end

#type=(type) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/config_manager/toggles/definition.rb', line 17

def type=(type)
  return unless name.present?

        unless Definition.types.include?(type)
raise("#{type} is an unsupported Toggle type.  Acceptable values are #{Definition.types}") 
        end
  $redis.hset(@key, 'type', type)
  @type = $redis.hget(@key, 'type')
end

#type_classObject



27
28
29
30
# File 'lib/config_manager/toggles/definition.rb', line 27

def type_class
    return Null unless valid?
    eval("ConfigManager::Toggles::#{type.camelize}")
end

#valid?Boolean

Returns:



58
59
60
# File 'lib/config_manager/toggles/definition.rb', line 58

def valid?
  !!(name.present? && type)
end