module ActiveSupport module Cache # A cache store implementation which stores everything into memory in the # same process. If you're running multiple Ruby on Rails server processes # (which is the case if you're using mongrel_cluster or Phusion Passenger), # then this means that your Rails server process instances won't be able # to share cache data with each other. If your application never performs # manual cache item expiry (e.g. when you're using generational cache keys), # then using MemoryStore is ok. Otherwise, consider carefully whether you # should be using this cache store. # # MemoryStore is not only able to store strings, but also arbitrary Ruby # objects. # # MemoryStore is not thread-safe. Use SynchronizedMemoryStore instead # if you need thread-safety. class MemoryStore < Store def initialize @data = {} end def read(name, options = nil) super @data[name] end def write(name, value, options = nil) super @data[name] = value.freeze end def delete(name, options = nil) super @data.delete(name) end def delete_matched(matcher, options = nil) super @data.delete_if { |k,v| k =~ matcher } end def exist?(name,options = nil) super @data.has_key?(name) end def clear @data.clear end end end end