Class: ActionDispatch::Session::AerospikeStore

Inherits:
AbstractStore
  • Object
show all
Defined in:
lib/action_dispatch/session/aerospike_store.rb

Constant Summary collapse

DEFAULT_OPTIONS =
{
    host: '127.0.0.1',
    port: 3000,
    ns: 'test',
    set: 'session_rails',
    bin: 'data'
}

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ AerospikeStore

Returns a new instance of AerospikeStore.



12
13
14
15
16
17
18
19
# File 'lib/action_dispatch/session/aerospike_store.rb', line 12

def initialize(app, options = {})
  options.merge!(DEFAULT_OPTIONS) { |_, old, _| old }
  @client = Aerospike::Client.new(options.delete(:host), options.delete(:port), options)
  options[:expire_after] ||= options[:expiration]
  options[:expire_after] ||= options[:expires_in]
  @options = options.deep_dup
  super
end

Instance Method Details

#destroy_session(_, sid, options) ⇒ Object

Remove a session from the cache.



41
42
43
44
45
# File 'lib/action_dispatch/session/aerospike_store.rb', line 41

def destroy_session(_, sid, options)
  merged = options.to_hash.merge!(@options) {|_, old, _| old}
  @client.delete(key_from(sid, merged), merged)
  generate_sid
end

#get_session(_, sid) ⇒ Object



21
22
23
24
25
26
# File 'lib/action_dispatch/session/aerospike_store.rb', line 21

def get_session(_, sid)
  unless sid and (session = @client.get(key_from(sid, @options)).bins[@options[:bin]])
    sid, session = generate_sid, {}
  end
  [sid, session]
end

#set_session(_, sid, session, options) ⇒ Object

Set a session in the cache.



29
30
31
32
33
34
35
36
37
38
# File 'lib/action_dispatch/session/aerospike_store.rb', line 29

def set_session(_, sid, session, options)
  merged = options.to_hash.merge!(@options) {|_, old, _| old}
  key = key_from(sid, merged)
  if session
    @client.put(key, Aerospike::Bin.new(merged[:bin], session), expiration: merged[:expire_after])
  else
    @client.delete(key)
  end
  sid
end