Sha256: 3d7a4baada13097054f64009babc15b90bd20d08c03d8435ea26507304ccd983

Contents?: true

Size: 1.46 KB

Versions: 11

Compression:

Stored size: 1.46 KB

Contents

module Redistat
  module Connection
    
    REQUIRED_SERVER_VERSION = "1.3.10"
    
    class << self
      
      def get(ref = nil)
        ref ||= :default
        connections[references[ref]] || create
      end
      
      def add(conn, ref = nil)
        ref ||= :default
        check_redis_version(conn)
        references[ref] = conn.client.id
        connections[conn.client.id] = conn
      end
      
      def create(options = {})
        #TODO clean/remove all ref-less connections
        ref = options.delete(:ref) || :default
        options.reverse_merge!(default_options)
        conn = (connections[connection_id(options)] ||= connection(options))
        references[ref] = conn.client.id
        conn
      end
      
      def connections
        @connections ||= {}
      end
      
      def references
        @references ||= {}
      end
      
      private
      
      def check_redis_version(conn)
        raise RedisServerIsTooOld if conn.info["redis_version"] < REQUIRED_SERVER_VERSION
        conn
      end
      
      def connection(options)
        check_redis_version(Redis.new(options))
      end
      
      def connection_id(options = {})
        options.reverse_merge!(default_options)
        "redis://#{options[:host]}:#{options[:port]}/#{options[:db]}"
      end
      
      def default_options
        {
          :host => '127.0.0.1',
          :port => 6379,
          :db => 0,
          :timeout => 5
        }
      end
      
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
redistat-0.2.6 lib/redistat/connection.rb
redistat-0.2.5 lib/redistat/connection.rb
redistat-0.2.4 lib/redistat/connection.rb
redistat-0.2.3 lib/redistat/connection.rb
redistat-0.2.2 lib/redistat/connection.rb
redistat-0.2.1 lib/redistat/connection.rb
redistat-0.2.0 lib/redistat/connection.rb
redistat-0.1.1 lib/redistat/connection.rb
redistat-0.1.0 lib/redistat/connection.rb
redistat-0.0.9 lib/redistat/connection.rb
redistat-0.0.8 lib/redistat/connection.rb