Class: MockRedis::PipelinedWrapper

Inherits:
Object
  • Object
show all
Includes:
UndefRedisMethods
Defined in:
lib/mock_redis/pipelined_wrapper.rb

Instance Method Summary collapse

Methods included from UndefRedisMethods

included

Constructor Details

#initialize(db) ⇒ PipelinedWrapper

Returns a new instance of PipelinedWrapper.



9
10
11
12
13
# File 'lib/mock_redis/pipelined_wrapper.rb', line 9

def initialize(db)
  @db = db
  @pipelined_futures = []
  @in_pipeline = false
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/mock_redis/pipelined_wrapper.rb', line 21

def method_missing(method, *args, &block)
  if @in_pipeline
    future = MockRedis::Future.new([method, *args])
    @pipelined_futures << future
    future
  else
    @db.send(method, *args, &block)
  end
end

Instance Method Details

#initialize_copy(source) ⇒ Object



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

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

#pipelined(_options = {}) {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



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

def pipelined(_options = {})
  @in_pipeline = true
  yield self
  @in_pipeline = false
  responses = @pipelined_futures.map do |future|
    begin
      result = send(*future.command)
      future.store_result(result)
      result
    rescue => e
      e
    end
  end
  @pipelined_futures = []
  responses
end

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

Returns:

  • (Boolean)


5
6
7
# File 'lib/mock_redis/pipelined_wrapper.rb', line 5

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