Skip to content

Commit

Permalink
Merge pull request nateware#41 from mbleigh/value_delegation
Browse files Browse the repository at this point in the history
Delegate method calls to the underlying value of a Redis::Value
  • Loading branch information
Nate Wiger committed Dec 1, 2011
2 parents 0f7a590 + 2782097 commit 3094509
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 4 deletions.
21 changes: 17 additions & 4 deletions lib/redis/value.rb
Expand Up @@ -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=

Expand All @@ -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
"#<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
27 changes: 27 additions & 0 deletions spec/redis_objects_instance_spec.rb
Expand Up @@ -58,6 +58,33 @@
@value.value.should == 'Peter Pan'
end

it "should provide a readable inspect" do
@value.value = 'monkey'
@value.inspect.should == '#<Redis::Value "monkey">'
@value.value = 1234
@value.inspect.should == '#<Redis::Value "1234">'
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
Expand Down

0 comments on commit 3094509

Please sign in to comment.