Sha256: 7a5eaa968ef1f1d34ccef7da17939623d3b703f31b04c16aa45cf449a7cacad6

Contents?: true

Size: 1.39 KB

Versions: 5

Compression:

Stored size: 1.39 KB

Contents

module Vanity
  # The Redis you should never use in production.
  class MockRedis
    @@hash = {}

    def initialize(options = {})
    end

    def [](key)
      @@hash[key]
    end

    def []=(key, value)
      @@hash[key] = value.to_s
    end

    def del(*keys)
      keys.flatten.each do |key|
        @@hash.delete key
      end
    end

    def setnx(key, value)
      @@hash[key] = value.to_s unless @@hash.has_key?(key)
    end

    def incr(key)
      @@hash[key] = (@@hash[key].to_i + 1).to_s
    end

    def incrby(key, value)
      @@hash[key] = (@@hash[key].to_i + value).to_s
    end

    def mget(keys)
      @@hash.values_at(*keys)
    end

    def exists(key)
      @@hash.has_key?(key)
    end

    def keys(pattern)
      regexp = Regexp.new(pattern.split("*").map { |r| Regexp.escape(r) }.join(".*"))
      @@hash.keys.select { |key| key =~ regexp }
    end

    def flushdb
      @@hash.clear
    end

    def sismember(key, value)
      case set = @@hash[key]
      when nil ; false
      when Set ; set.member?(value)
      else fail "Not a set"
      end
    end

    def sadd(key, value)
      case set = @@hash[key]
      when nil ; @@hash[key] = Set.new([value])
      when Set ; set.add value
      else fail "Not a set"
      end
    end

    def scard(key)
      case set = @@hash[key]
      when nil ; 0
      when Set ; set.size
      else fail "Not a set"
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
vanity-1.3.0 lib/vanity/mock_redis.rb
mikeg-vanity-1.3.0 lib/vanity/mock_redis.rb
vanity-1.2.0 lib/vanity/mock_redis.rb
vanity-1.1.1 lib/vanity/mock_redis.rb
vanity-1.1.0 lib/vanity/mock_redis.rb