Class: Redis::BaseObject
- Inherits:
-
Object
show all
- Defined in:
- lib/redis/base_object.rb
Overview
Defines base functionality for all redis-objects.
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_json ⇒ Object
39
40
41
|
# File 'lib/redis/base_object.rb', line 39
def as_json(*)
to_hash
end
|
#redis ⇒ Object
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_expiration ⇒ Object
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_hash ⇒ Object
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
|