forked from nateware/redis-objects
/
value.rb
46 lines (39 loc) · 1.03 KB
/
value.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
require File.dirname(__FILE__) + '/base_object'
class Redis
#
# Class representing a simple value. You can use standard Ruby operations on it.
#
class Value < BaseObject
require 'redis/helpers/core_commands'
include Redis::Helpers::CoreCommands
require 'redis/helpers/serialize'
include Redis::Helpers::Serialize
attr_reader :key, :options, :redis
def initialize(key, *args)
super(key, *args)
@redis.setnx(key, @options[:default]) if @options[:default]
end
def value=(val)
if val.nil?
delete
else
redis.set key, to_redis(val)
end
end
alias_method :set, :value=
def value
from_redis redis.get(key)
end
alias_method :get, :value
def inspect
"#<Redis::Value #{value.inspect}>"
end
def ==(other); value == other end
def nil?; value.nil? end
def as_json(*args); value.as_json *args end
def to_json(*args); value.to_json *args end
def method_missing(*args)
self.value.send *args
end
end
end