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