Permalink
Browse files

MemCacheStore#write and #delete return a boolean indicating whether t…

…he operation succeeded

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8767 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 09d98f1 commit 0d26e47b296e29dc48da1b31949d7b7adfb40553 @jeremy jeremy committed Feb 1, 2008
Showing with 16 additions and 5 deletions.
  1. +16 −5 activesupport/lib/active_support/cache/mem_cache_store.rb
@@ -3,6 +3,14 @@
module ActiveSupport
module Cache
class MemCacheStore < Store
+ module Response
+ STORED = "STORED\r\n"
+ NOT_STORED = "NOT_STORED\r\n"
+ EXISTS = "EXISTS\r\n"
+ NOT_FOUND = "NOT_FOUND\r\n"
+ DELETED = "DELETED\r\n"
+ end
+
attr_reader :addresses
def initialize(*addresses)
@@ -21,22 +29,25 @@ def read(key, options = nil)
end
# Set key = value if key isn't already set. Pass :force => true
- # to unconditionally set key = value.
+ # to unconditionally set key = value. Returns a boolean indicating
+ # whether the key was set.
def write(key, value, options = {})
super
method = options[:force] ? :set : :add
- @data.send(method, key, value, expires_in(options), raw?(options))
+ response = @data.send(method, key, value, expires_in(options), raw?(options))
+ response == Response::STORED
rescue MemCache::MemCacheError => e
logger.error("MemCacheError (#{e}): #{e.message}")
- nil
+ false
end
def delete(key, options = nil)
super
- @data.delete(key, expires_in(options))
+ response = @data.delete(key, expires_in(options))
+ response == Response::DELETED
rescue MemCache::MemCacheError => e
logger.error("MemCacheError (#{e}): #{e.message}")
- nil
+ false
end
def delete_matched(matcher, options = nil)

0 comments on commit 0d26e47

Please sign in to comment.