Sha256: 57bef71fe1a8232412270ba8d06e4f33804c14e71f32a0b9673bb40d4ba16c9a
Contents?: true
Size: 1.32 KB
Versions: 5
Compression:
Stored size: 1.32 KB
Contents
module ConfigManager module Settings module Persistence def self.included(base) base.extend ClassMethods end def persist Setting.persist(@id, @value, *@tags) end module ClassMethods def build(params) tags = (params[:tags] || params[:formatted_tags] || ""). gsub(/\s*,\s*/,','). split(',') new(params[:id], params[:value], tags) end def create(params) setting = build(params) if setting.valid? setting.persist find(params[:id], true) else setting end end def persist(id, value, *indexes) $redis.set(generate_key(id), value) unless indexes.empty? $redis.sadd(generate_tags_key(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 def delete(id) $redis.del(generate_key(id), generate_tags_key(id)) end private # stores the setting id under the requested indexes # this allows us to search all keys for a given index # such as the global index returning all keys or a tag def index_by(id, indexes) indexes.each do |index| $redis.sadd(index, generate_key(id)) end end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems