class MockRedis::MultiDbWrapper
Public Class Methods
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 7 def initialize(db) @db_index = 0 @prototype_db = db.clone @databases = Hash.new { |h, k| h[k] = @prototype_db.clone } @databases[@db_index] = db end
Public Instance Methods
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 33 def flushall @databases.each_value(&:flushdb) 'OK' end
Redis commands
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 24 def initialize_copy(source) super @databases = @databases.clone @databases.each_key do |k| @databases[k] = @databases[k].clone end end
Calls superclass method
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 20 def method_missing(method, *args, &block) current_db.send(method, *args, &block) end
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 38 def move(key, db_index) src = current_db dest = db(db_index) if !src.exists?(key) || dest.exists?(key) false else case current_db.type(key) when 'hash' dest.hmset(key, *src.hgetall(key).map { |k, v| [k, v] }.flatten) when 'list' while value = src.rpop(key) dest.lpush(key, value) end when 'set' while value = src.spop(key) dest.sadd(key, value) end when 'string' dest.set(key, src.get(key)) when 'zset' src.zrange(key, 0, -1, :with_scores => true).each do |(m, s)| dest.zadd(key, s, m) end else raise ArgumentError, "Can't move a key of type #{current_db.type(key).inspect}" end src.del(key) true end end
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 16 def respond_to?(method, include_private = false) super || current_db.respond_to?(method, include_private) end
Calls superclass method
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 72 def select(db_index) @db_index = db_index.to_i 'OK' end
Private Instance Methods
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 79 def current_db @databases[@db_index] end
Source
# File lib/mock_redis/multi_db_wrapper.rb, line 83 def db(index) @databases[index] end