Class: RackJwtAegis::MemcachedAdapter

Inherits:
CacheAdapter show all
Defined in:
lib/rack_jwt_aegis/cache_adapter.rb

Overview

Memcached cache adapter

Since:

  • 0.1.0

Instance Method Summary collapse

Methods inherited from CacheAdapter

build, #deserialize_value, #exist?, #serialize_value

Constructor Details

#initialize(options = {}) ⇒ MemcachedAdapter

Returns a new instance of MemcachedAdapter.

Since:

  • 0.1.0



183
184
185
186
187
188
189
190
# File 'lib/rack_jwt_aegis/cache_adapter.rb', line 183

def initialize(options = {})
  super
  require 'dalli' unless defined?(Dalli)

  @memcached = Dalli::Client.new(options[:servers] || 'localhost:11211', options)
rescue LoadError
  raise CacheError, "Dalli gem not found. Add 'gem \"dalli\"' to your Gemfile."
end

Instance Method Details

#clearObject

Since:

  • 0.1.0



214
215
216
217
218
219
# File 'lib/rack_jwt_aegis/cache_adapter.rb', line 214

def clear
  @memcached.flush
  true
rescue StandardError => e
  raise CacheError, "Memcached clear error: #{e.message}"
end

#delete(key) ⇒ Object

Since:

  • 0.1.0



207
208
209
210
211
212
# File 'lib/rack_jwt_aegis/cache_adapter.rb', line 207

def delete(key)
  @memcached.delete(key.to_s)
  true
rescue StandardError => e
  raise CacheError, "Memcached delete error: #{e.message}"
end

#read(key) ⇒ Object

Since:

  • 0.1.0



192
193
194
195
196
197
# File 'lib/rack_jwt_aegis/cache_adapter.rb', line 192

def read(key)
  value = @memcached.get(key.to_s)
  deserialize_value(value)
rescue StandardError => e
  raise CacheError, "Memcached read error: #{e.message}"
end

#write(key, value, expires_in: nil) ⇒ Object

Since:

  • 0.1.0



199
200
201
202
203
204
205
# File 'lib/rack_jwt_aegis/cache_adapter.rb', line 199

def write(key, value, expires_in: nil)
  serialized_value = serialize_value(value)
  @memcached.set(key.to_s, serialized_value, expires_in&.to_i)
  true
rescue StandardError => e
  raise CacheError, "Memcached write error: #{e.message}"
end