X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/06374c4b17be54086b674549f0a8e4c76602d84c..03fd01c7eb56e1878e133857e95dcc8d23d14445:/client-libraries/ruby_2/rubyredis.rb diff --git a/client-libraries/ruby_2/rubyredis.rb b/client-libraries/ruby_2/rubyredis.rb index 4d8bf3f4..38823206 100644 --- a/client-libraries/ruby_2/rubyredis.rb +++ b/client-libraries/ruby_2/rubyredis.rb @@ -6,6 +6,7 @@ # method_missing instead. require 'socket' +require 'set' begin if (RUBY_VERSION >= '1.9') @@ -27,6 +28,7 @@ class RedisClient } ConvertToBool = lambda{|r| r == 0 ? false : r} + ConvertToSet = lambda{|r| Set.new(r)} ReplyProcessor = { "exists" => ConvertToBool, @@ -39,6 +41,10 @@ class RedisClient "del"=> ConvertToBool, "renamenx"=> ConvertToBool, "expire"=> ConvertToBool, + "smembers" => ConvertToSet, + "sinter" => ConvertToSet, + "sunion" => ConvertToSet, + "sdiff" => ConvertToSet, "keys" => lambda{|r| r.split(" ")}, "info" => lambda{|r| info = {} @@ -58,7 +64,6 @@ class RedisClient "delete" => "del", "randkey" => "randomkey", "list_length" => "llen", - "type?" => "type", "push_tail" => "rpush", "push_head" => "lpush", "pop_tail" => "rpop", @@ -74,13 +79,15 @@ class RedisClient "set_member?" => "sismember", "set_members" => "smembers", "set_intersect" => "sinter", + "set_intersect_store" => "sinterstore", "set_inter_store" => "sinterstore", "set_union" => "sunion", "set_union_store" => "sunionstore", "set_diff" => "sdiff", "set_diff_store" => "sdiffstore", "set_move" => "smove", - "set_unless_exists" => "setnx" + "set_unless_exists" => "setnx", + "rename_unless_exists" => "renamenx" } def initialize(opts={}) @@ -108,6 +115,7 @@ class RedisClient begin sock = TCPSocket.new(host, port, 0) rescue Timeout::Error + @sock = nil raise Timeout::Error, "Timeout connecting to the server" end else @@ -228,7 +236,7 @@ class RedisClient } res else - raise "Protocol error, got '#{rtype}' as initial reply bye" + raise "Protocol error, got '#{rtype}' as initial reply byte" end end end