Sha256: f4b65d4a244282edfa6d008a15023267eaabf157ac1d6bafd11560c87268eb74
Contents?: true
Size: 1.3 KB
Versions: 3
Compression:
Stored size: 1.3 KB
Contents
module RedisBackedModel class SortedSet require 'date' def initialize(model, model_id, definition) self.model = model self.model_id = model_id self.definition = definition self end # Serializes the object as a redis command to create a sorted set. def to_redis "zadd|#{key}|#{score}|#{member}" end private attr_accessor :model, :model_id, :definition def definition_keys definition.keys.first end def definition_values definition.values.first end def key_by parse_definition(definition_keys)[1] end def key_for parse_definition(definition_keys)[0] end def key_model_name model.to_s.underscore.pluralize end def key_for_value parse_definition(definition_values)[0] end def member model_id end def key "#{key_model_name}_for_#{key_for}_by_#{key_by}:#{key_for_value}" end def score score = parse_definition(definition_values)[1] key_by == 'date' ? Date.parse(score).to_time.to_f : score end def parse_definition(string) string.match(/.*\[(\S+)\]/)[1].split('|') end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
redis_backed_model-1.1.0 | lib/redis_backed_model/sorted_set.rb |
redis_backed_model-1.0.1 | lib/redis_backed_model/sorted_set.rb |
redis_backed_model-1.0.0 | lib/redis_backed_model/sorted_set.rb |