Sha256: a31555e6e7fac9c878b04ea855947009113aef72f55142734c7e0b353e450ead
Contents?: true
Size: 1.41 KB
Versions: 3
Compression:
Stored size: 1.41 KB
Contents
# frozen_string_literal: true module Split module Persistence class RedisAdapter DEFAULT_CONFIG = {:namespace => 'persistence'}.freeze attr_reader :redis_key def initialize(context, key = nil) if key @redis_key = "#{self.class.config[:namespace]}:#{key}" elsif lookup_by = self.class.config[:lookup_by] if lookup_by.respond_to?(:call) key_frag = lookup_by.call(context) else key_frag = context.send(lookup_by) end @redis_key = "#{self.class.config[:namespace]}:#{key_frag}" else raise "Please configure lookup_by" end end def [](field) Split.redis.hget(redis_key, field) end def []=(field, value) Split.redis.hset(redis_key, field, value) expire_seconds = self.class.config[:expire_seconds] Split.redis.expire(redis_key, expire_seconds) if expire_seconds end def delete(field) Split.redis.hdel(redis_key, field) end def keys Split.redis.hkeys(redis_key) end def self.find(user_id) new(nil, user_id) end def self.with_config(options={}) self.config.merge!(options) self end def self.config @config ||= DEFAULT_CONFIG.dup end def self.reset_config! @config = DEFAULT_CONFIG.dup end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
split-4.0.1 | lib/split/persistence/redis_adapter.rb |
split-4.0.0.pre2 | lib/split/persistence/redis_adapter.rb |
split-4.0.0.pre | lib/split/persistence/redis_adapter.rb |