Sha256: fb965780a4af4c65ea2f7c0ab48c714da0ddabf7146ce36fb5f9f698fdc6d4eb
Contents?: true
Size: 872 Bytes
Versions: 8
Compression:
Stored size: 872 Bytes
Contents
require 'redis-namespace' require 'redis/distributed' require 'uri' require 'singleton' module Routemaster class RedisBroker include Singleton def initialize @_connections = {} _cleanup end def get(name, urls: []) _check_for_fork @_connections[name] ||= begin parsed_url = URI.parse(urls.first) namespace = parsed_url.path.split('/')[2] || 'rm' Redis::Namespace.new(namespace, redis: Redis::Distributed.new(urls)) end end def cleanup _cleanup end private def _check_for_fork _cleanup unless Process.pid == @_pid end def _cleanup @_pid = Process.pid @_connections.each_value.map(&:redis).each(&:quit) @_connections = {} end end end
Version data entries
8 entries across 8 versions & 1 rubygems