Class: MockRedis

Inherits:
Object
  • Object
show all
Includes:
UndefRedisMethods
Defined in:
lib/mock_redis/version.rb,
lib/mock_redis.rb,
lib/mock_redis/zset.rb,
lib/mock_redis/future.rb,
lib/mock_redis/stream.rb,
lib/mock_redis/database.rb,
lib/mock_redis/stream/id.rb,
lib/mock_redis/assertions.rb,
lib/mock_redis/exceptions.rb,
lib/mock_redis/info_method.rb,
lib/mock_redis/set_methods.rb,
lib/mock_redis/sort_method.rb,
lib/mock_redis/hash_methods.rb,
lib/mock_redis/list_methods.rb,
lib/mock_redis/zset_methods.rb,
lib/mock_redis/memory_method.rb,
lib/mock_redis/expire_wrapper.rb,
lib/mock_redis/stream_methods.rb,
lib/mock_redis/string_methods.rb,
lib/mock_redis/utility_methods.rb,
lib/mock_redis/indifferent_hash.rb,
lib/mock_redis/multi_db_wrapper.rb,
lib/mock_redis/connection_method.rb,
lib/mock_redis/pipelined_wrapper.rb,
lib/mock_redis/geospatial_methods.rb,
lib/mock_redis/transaction_wrapper.rb,
lib/mock_redis/undef_redis_methods.rb

Overview

TODO: Implement the following commands

* xgroup
* xreadgroup
* xack
* xpending
* xclaim
* xinfo
* xtrim
* xdel

TODO: Complete support for

* xtrim
    - `approximate: true` argument is currently ignored
* xadd
    - `approximate: true` argument (for capped streams) is currently ignored

For details of these commands see

* https://redis.io/topics/streams-intro
* https://redis.io/commands#stream

Defined Under Namespace

Modules: Assertions, ConnectionMethod, GeospatialMethods, HashMethods, InfoMethod, ListMethods, MemoryMethod, SetMethods, SortMethod, StreamMethods, StringMethods, UndefRedisMethods, UtilityMethods, ZsetMethods Classes: Database, ExpireWrapper, Future, FutureNotReady, IndifferentHash, MultiDbWrapper, PipelinedWrapper, Stream, TransactionWrapper, Zset

Constant Summary collapse

DEFAULTS =
{
  :scheme => 'redis',
  :host => '127.0.0.1',
  :port => 6379,
  :path => nil,
  :timeout => 5.0,
  :password => nil,
  :logger => nil,
  :db => 0,
  :time_class => Time,
}.freeze
VERSION =
'0.45.0'
WouldBlock =
Class.new(StandardError)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from UndefRedisMethods

included

Constructor Details

#initialize(*args) ⇒ MockRedis

Returns a new instance of MockRedis.



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/mock_redis.rb', line 33

def initialize(*args)
  @options = _parse_options(args.first)

  @db = PipelinedWrapper.new(
    TransactionWrapper.new(
      ExpireWrapper.new(
        MultiDbWrapper.new(
          Database.new(self, *args)
        )
      )
    )
  )
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



15
16
17
# File 'lib/mock_redis.rb', line 15

def options
  @options
end

Class Method Details

.connect(*args) ⇒ Object



29
30
31
# File 'lib/mock_redis.rb', line 29

def self.connect(*args)
  new(*args)
end

Instance Method Details

#clientObject



72
73
74
# File 'lib/mock_redis.rb', line 72

def client
  self
end

#connectObject



76
77
78
# File 'lib/mock_redis.rb', line 76

def connect
  self
end

#dbObject



60
61
62
# File 'lib/mock_redis.rb', line 60

def db
  options[:db]
end

#hostObject



52
53
54
# File 'lib/mock_redis.rb', line 52

def host
  options[:host]
end

#idObject Also known as: location



47
48
49
# File 'lib/mock_redis.rb', line 47

def id
  "redis://#{host}:#{port}/#{db}"
end

#initialize_copy(source) ⇒ Object



98
99
100
101
# File 'lib/mock_redis.rb', line 98

def initialize_copy(source)
  super
  @db = @db.clone
end

#loggerObject



64
65
66
# File 'lib/mock_redis.rb', line 64

def logger
  options[:logger]
end

#portObject



56
57
58
# File 'lib/mock_redis.rb', line 56

def port
  options[:port]
end

#reconnectObject



80
81
82
# File 'lib/mock_redis.rb', line 80

def reconnect
  self
end

#respond_to?(method, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


88
89
90
# File 'lib/mock_redis.rb', line 88

def respond_to?(method, include_private = false)
  super || @db.respond_to?(method, include_private)
end

#time_at(timestamp) ⇒ Object



68
69
70
# File 'lib/mock_redis.rb', line 68

def time_at(timestamp)
  options[:time_class].at(timestamp)
end

#with {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (MockRedis)

    the object that the method was called on



84
85
86
# File 'lib/mock_redis.rb', line 84

def with
  yield self
end