Class: RediSesh::Store

Inherits:
Object
  • Object
show all
Defined in:
lib/redi_sesh/store.rb

Constant Summary collapse

DEFAULT_EXPIRES_IN =

1 day

60 * 60 * 24

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(redis:, prefix:) ⇒ Store

Returns a new instance of Store.



26
27
28
29
# File 'lib/redi_sesh/store.rb', line 26

def initialize(redis:, prefix:)
  @redis = redis
  @prefix = prefix
end

Class Method Details

.create(url) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/redi_sesh/store.rb', line 9

def self.create(url)
  uri = URI.parse(url)
  parts = uri.path.split('/')

  parts.shift if parts.first.empty?

  if parts.size > 1
    path, prefix = parts
    uri.path = "/#{path}"
  else
    prefix = 'sessions'
  end

  redis = Redis.new(url: uri)
  new(redis: redis, prefix: prefix)
end

Instance Method Details

#del(*keys) ⇒ Object



47
48
49
# File 'lib/redi_sesh/store.rb', line 47

def del(*keys)
  redis.del(*keys.map { |key| build_key(key) })
end

#get(key) ⇒ Object



42
43
44
45
# File 'lib/redi_sesh/store.rb', line 42

def get(key)
  data = redis.get(build_key(key))
  deserialize(data)
end

#infoObject



31
32
33
# File 'lib/redi_sesh/store.rb', line 31

def info
  redis.info
end

#keysObject



51
52
53
54
55
# File 'lib/redi_sesh/store.rb', line 51

def keys
  redis.keys("#{prefix}:*").map do |key|
    key.delete_prefix("#{prefix}:")
  end
end

#set(key, value, options = {}) ⇒ Object



35
36
37
38
39
40
# File 'lib/redi_sesh/store.rb', line 35

def set(key, value, options = {})
  key = build_key(key)
  expires_in = options.fetch(:expires_in, DEFAULT_EXPIRES_IN)
  value = serialize(value)
  redis.set(key, value, ex: expires_in)
end