Module: RestGW2::Cache

Defined in:
lib/rest-gw2/server/cache.rb

Class Method Summary collapse

Class Method Details

.default(logger) ⇒ Object



5
6
7
# File 'lib/rest-gw2/server/cache.rb', line 5

def default logger
  @cache ||= Cache.pick(logger)
end

.lru_cache(logger) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/rest-gw2/server/cache.rb', line 29

def lru_cache logger
  require 'lru_redux'
  logger.info("LRU cache size: 100")
  LruRedux::ThreadSafeCache.new(100)
rescue LoadError => e
  logger.debug("Skip LRU cache because: #{e}")
  nil
end

.memcache(logger) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rest-gw2/server/cache.rb', line 13

def memcache logger
  require 'dalli'
  client = Dalli::Client.new
  File.open(IO::NULL) do |null|
    Dalli.logger = Logger.new(null)
    client.alive!
    Dalli.logger = logger
  end
  logger.info("Memcached connected to #{client.version.keys.join(', ')}")
  client.extend(RestCore::DalliExtension)
  client
rescue LoadError, Dalli::RingError => e
  logger.debug("Skip memcached because: #{e}")
  nil
end

.pick(logger) ⇒ Object



9
10
11
# File 'lib/rest-gw2/server/cache.rb', line 9

def pick logger
  memcache(logger) || lru_cache(logger)
end