Class: Split::Persistence::RedisAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/split/persistence/redis_adapter.rb

Constant Summary collapse

DEFAULT_CONFIG =
{:namespace => 'persistence'}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context, key = nil) ⇒ RedisAdapter

Returns a new instance of RedisAdapter.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/split/persistence/redis_adapter.rb', line 9

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

Instance Attribute Details

#redis_keyObject (readonly)

Returns the value of attribute redis_key.



7
8
9
# File 'lib/split/persistence/redis_adapter.rb', line 7

def redis_key
  @redis_key
end

Class Method Details

.configObject



47
48
49
# File 'lib/split/persistence/redis_adapter.rb', line 47

def self.config
  @config ||= DEFAULT_CONFIG.dup
end

.reset_config!Object



51
52
53
# File 'lib/split/persistence/redis_adapter.rb', line 51

def self.reset_config!
  @config = DEFAULT_CONFIG.dup
end

.with_config(options = {}) ⇒ Object



42
43
44
45
# File 'lib/split/persistence/redis_adapter.rb', line 42

def self.with_config(options={})
  self.config.merge!(options)
  self
end

Instance Method Details

#[](field) ⇒ Object



24
25
26
# File 'lib/split/persistence/redis_adapter.rb', line 24

def [](field)
  Split.redis.hget(redis_key, field)
end

#[]=(field, value) ⇒ Object



28
29
30
31
32
# File 'lib/split/persistence/redis_adapter.rb', line 28

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

#delete(field) ⇒ Object



34
35
36
# File 'lib/split/persistence/redis_adapter.rb', line 34

def delete(field)
  Split.redis.hdel(redis_key, field)
end

#keysObject



38
39
40
# File 'lib/split/persistence/redis_adapter.rb', line 38

def keys
  Split.redis.hkeys(redis_key)
end