Skip to content

Instantly share code, notes, and snippets.

@julien51
Created August 14, 2010 09:57
Show Gist options
  • Save julien51/524175 to your computer and use it in GitHub Desktop.
Save julien51/524175 to your computer and use it in GitHub Desktop.
module EventMachine
module Protocols
module Redis
def initialize(options = {})
@host = options[:host]
@port = options[:port]
@db = (options[:db] || 0).to_i
@password = options[:password]
@logger = options[:logger]
@auto_reconnect = options[:auto_reconnect] || false
@error_callback = lambda do |code|
err = RedisError.new
err.code = code
raise err, "Redis server returned error code: #{code}"
end
# These commands should be first
auth_and_select_db
end
def connected?
@connected == true
end
def unbind
@logger.debug { "Disconnected" } if @logger
if @connected || @auto_reconnect
EM.add_timer(1) do
@logger.debug { "Reconnecting to #{@host}:#{@port}" } if @logger
reconnect @host, @port
auth_and_select_db
end
@connected = false
@deferred_status = nil
else
raise 'Unable to connect to redis server'
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment