class SeaMule::Backend

Constants

MAX_RECONNECT_ATTEMPTS

Attributes

logger[R]
store[R]

Public Class Methods

connect(server) click to toggle source
# File lib/seamule/backend.rb, line 14
def self.connect(server)
  case server
    when String
      redis = connect_to(server)
      Redis::Namespace.new(:seamule, redis: redis)
    when Hash
      Redis::Namespace.new(:seamule, redis: Redis.new(server))
    else
      raise ArgumentError, "Invalid Server: #{server.inspect}"
  end
end
connect_to(server) click to toggle source
# File lib/seamule/backend.rb, line 26
def self.connect_to(server)
  Redis.connect(url: server, :thread_safe => true)
end
new(store, logger) click to toggle source
# File lib/seamule/backend.rb, line 9
def initialize(store, logger)
  @store = store
  @logger = logger
end

Public Instance Methods

reconnect() click to toggle source
# File lib/seamule/backend.rb, line 32
def reconnect
  store.client.reconnect
rescue Redis::BaseConnectionError
  tries ||= 0
  if (tries += 1) < MAX_RECONNECT_ATTEMPTS
    logger.info "Error reconnecting to Redis; retrying"
    Kernel.sleep(tries)
    retry
  else
    logger.info "Error reconnecting to Redis; quitting"
    raise ConnectionError
  end
end