Sha256: 83d19226f0a87468dc9a7bdb5327fe73a19e97a2699fa83a67ebdb9e2bd6a15a

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

require 'redis_failover/errors'

module RedisFailover
  # Common utiilty methods and constants.
  module Util
    extend self

    # Default node in ZooKeeper that contains the current list of available redis nodes.
    DEFAULT_ZNODE_PATH = '/redis_failover_nodes'.freeze

    # Connectivity errors that the redis client raises.
    REDIS_ERRORS = Errno.constants.map { |c| Errno.const_get(c) }.freeze

    # Full set of errors related to connectivity.
    CONNECTIVITY_ERRORS = [
      RedisFailover::Error,
      ZK::Exceptions::InterruptedSession,
      REDIS_ERRORS
    ].flatten.freeze

    def symbolize_keys(hash)
      Hash[hash.map { |k, v| [k.to_sym, v] }]
    end

    def different?(ary_a, ary_b)
      ((ary_a | ary_b) - (ary_a & ary_b)).size > 0
    end

    def self.logger
      @logger ||= begin
        logger = Logger.new(STDOUT)
        logger.level = Logger::INFO
        logger.formatter = proc do |severity, datetime, progname, msg|
          "#{datetime.utc} RedisFailover #{Process.pid} #{severity}: #{msg}\n"
        end
        logger
      end
    end

    def self.logger=(logger)
      @logger = logger
    end

    def logger
      Util.logger
    end

    def encode(data)
      MultiJson.encode(data)
    end

    def decode(data)
      return unless data
      MultiJson.decode(data)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
redis_failover-0.8.0 lib/redis_failover/util.rb
redis_failover-0.7.0 lib/redis_failover/util.rb