diff --git a/lib/redis/value.rb b/lib/redis/value.rb index 984301c..d85cdf2 100644 --- a/lib/redis/value.rb +++ b/lib/redis/value.rb @@ -17,7 +17,11 @@ def initialize(key, *args) end def value=(val) - redis.set key, to_redis(val) + if val.nil? + delete + else + redis.set key, to_redis(val) + end end alias_method :set, :value= @@ -26,8 +30,17 @@ def value end alias_method :get, :value - def to_s; value.to_s; end - def ==(x); value == x; end - def nil?; value.nil?; end + def 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 diff --git a/spec/redis_objects_instance_spec.rb b/spec/redis_objects_instance_spec.rb index 7a0c6d1..543214d 100644 --- a/spec/redis_objects_instance_spec.rb +++ b/spec/redis_objects_instance_spec.rb @@ -58,6 +58,33 @@ @value.value.should == 'Peter Pan' end + it "should provide a readable inspect" do + @value.value = 'monkey' + @value.inspect.should == '#' + @value.value = 1234 + @value.inspect.should == '#' + end + + it 'should delegate unrecognized methods to the value' do + @value.value = 'monkey' + @value.to_sym.should == :monkey + end + + it 'should properly pass equality operations on to the value' do + @value.value = 'monkey' + @value.should == 'monkey' + end + + it 'should properly pass nil? on to the value' do + @value.delete + @value.nil?.should == true + end + + it 'should equate setting the value to nil to deletion' do + @value.value = nil + @value.nil?.should == true + end + after do @value.delete end