Class: Redis::BaseObject

Inherits:
Object
  • Object
show all
Defined in:
lib/redis/base_object.rb

Overview

Defines base functionality for all redis-objects.

Direct Known Subclasses

Counter, HashKey, List, Lock, Set, SortedSet, Value

Instance Method Summary collapse

Constructor Details

#initialize(key, *args) ⇒ BaseObject

Returns a new instance of BaseObject.



4
5
6
7
8
# File 'lib/redis/base_object.rb', line 4

def initialize(key, *args)
  @key     = key.is_a?(Array) ? key.flatten.join(':') : key
  @options = args.last.is_a?(Hash) ? args.pop : {}
  @myredis = Objects::ConnectionPoolProxy.proxy_if_needed(args.first)
end

Instance Method Details

#allow_expiration(&block) ⇒ Object



27
28
29
30
31
# File 'lib/redis/base_object.rb', line 27

def allow_expiration(&block)
  result = block.call
  set_expiration
  result
end

#as_jsonObject



39
40
41
# File 'lib/redis/base_object.rb', line 39

def as_json(*)
  to_hash
end

#redisObject

Dynamically query the handle to enable resetting midstream



11
12
13
# File 'lib/redis/base_object.rb', line 11

def redis
  @myredis || ::Redis::Objects.redis
end

#set_expirationObject



17
18
19
20
21
22
23
24
25
# File 'lib/redis/base_object.rb', line 17

def set_expiration
  if !@options[:expiration].nil?
    redis.expire(@key, @options[:expiration]) if redis.ttl(@key) < 0
  elsif !@options[:expireat].nil?
    expireat = @options[:expireat]
    at = expireat.respond_to?(:call) ? expireat.call.to_i : expireat.to_i
    redis.expireat(@key, at) if redis.ttl(@key) < 0
  end
end

#to_hashObject



43
44
45
# File 'lib/redis/base_object.rb', line 43

def to_hash
  { "key" => @key, "options" => @options, "value" => value }
end

#to_json(*args) ⇒ Object



33
34
35
36
37
# File 'lib/redis/base_object.rb', line 33

def to_json(*args)
  to_hash.to_json(*args)
rescue NoMethodError => e
  raise e.class, "The current runtime does not provide a `to_json` implementation. Require 'json' or another JSON library and try again."
end