Class: ConfigManager::Setting
- Inherits:
-
Object
- Object
- ConfigManager::Setting
- Defined in:
- lib/config_manager/setting.rb
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#tags ⇒ Object
readonly
Returns the value of attribute tags.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Class Method Summary collapse
- .all ⇒ Object
- .build(params) ⇒ Object
- .create(params) ⇒ Object
- .delete(id) ⇒ Object
- .find(id, with_tags = false) ⇒ Object
- .persist(id, value, *indexes) ⇒ Object
- .tags ⇒ Object
- .value(id) ⇒ Object
Instance Method Summary collapse
- #formatted_tags ⇒ Object
-
#initialize(id, value, tags) ⇒ Setting
constructor
A new instance of Setting.
- #message ⇒ Object
- #persist ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(id, value, tags) ⇒ Setting
Returns a new instance of Setting.
5 6 7 8 9 |
# File 'lib/config_manager/setting.rb', line 5 def initialize(id, value, ) @id = id @value = value = end |
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
3 4 5 |
# File 'lib/config_manager/setting.rb', line 3 def id @id end |
#tags ⇒ Object (readonly)
Returns the value of attribute tags.
3 4 5 |
# File 'lib/config_manager/setting.rb', line 3 def end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
3 4 5 |
# File 'lib/config_manager/setting.rb', line 3 def value @value end |
Class Method Details
.all ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/config_manager/setting.rb', line 75 def all keys = $redis.smembers(global_key) return [] if keys.empty? values = $redis.mget(*keys) # remove deleted keys obsolete_keys = Range.new(0, keys.size, true).inject([]) do |memo, i| values.at(i) ? memo : (memo << keys.at(i)) end unless obsolete_keys.empty? Rails.logger.info("DELETING OBSOLETE KEYS IN GLOBAL INDEX: #{obsolete_keys}") $redis.srem(global_key, obsolete_keys) keys = keys - obsolete_keys values.compact! end # get tags ids = keys.map {|k| k.gsub("#{prefix}:", '') } tag_keys = ids.map {|id| (id) } = tag_keys.map {|key| $redis.smembers(key) } ids.zip(values, ).map do |i,v, t| Setting.new(i, v, t) end end |
.build(params) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/config_manager/setting.rb', line 29 def build(params) = (params[:tags] || params[:formatted_tags] || ""). gsub(/\s*,\s*/,','). split(',') new(params[:id], params[:value], ) end |
.create(params) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/config_manager/setting.rb', line 40 def create(params) setting = build(params) if setting.valid? setting.persist find(params[:id], true) else setting end end |
.delete(id) ⇒ Object
107 108 109 |
# File 'lib/config_manager/setting.rb', line 107 def delete(id) $redis.del(generate_key(id), (id)) end |
.find(id, with_tags = false) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/config_manager/setting.rb', line 63 def find(id, =false) key = generate_key(id) value = $redis.get(key) return nil unless value index = (id) = ? $redis.smembers(index) : [] new(id, value, ) end |
.persist(id, value, *indexes) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/config_manager/setting.rb', line 50 def persist(id, value, *indexes) $redis.set(generate_key(id), value) unless indexes.empty? $redis.sadd((id), indexes) $redis.sadd(tag_global_key, indexes) end # update global and tag indexes indexes = indexes.map{|index| generate_index(index)} indexes << global_key index_by(id, indexes) end |
.tags ⇒ Object
103 104 105 |
# File 'lib/config_manager/setting.rb', line 103 def $redis.smembers(tag_global_key) end |
.value(id) ⇒ Object
36 37 38 |
# File 'lib/config_manager/setting.rb', line 36 def value(id) (find(id) || build({})).value end |
Instance Method Details
#formatted_tags ⇒ Object
15 16 17 |
# File 'lib/config_manager/setting.rb', line 15 def && .join(', ') end |
#message ⇒ Object
23 24 25 26 |
# File 'lib/config_manager/setting.rb', line 23 def return "missing name(id)" unless @id.present? return "missing value" unless !!@value end |
#persist ⇒ Object
19 20 21 |
# File 'lib/config_manager/setting.rb', line 19 def persist Setting.persist(@id, @value, *) end |
#valid? ⇒ Boolean
11 12 13 |
# File 'lib/config_manager/setting.rb', line 11 def valid? @id.present? && !!@value end |