1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

use prepend instead of extending every instance

extending an instance with a module puts the methods on top of it,
prepend does the same but on the class level, so less work for us and more standard way of doing things
This commit is contained in:
Michael Grosser 2015-11-06 06:17:05 -08:00
parent cb67c81933
commit 894336a23f
3 changed files with 27 additions and 30 deletions

View file

@ -10,6 +10,7 @@ module ActiveSupport
# FileStore implements the Strategy::LocalCache strategy which implements # FileStore implements the Strategy::LocalCache strategy which implements
# an in-memory cache inside of a block. # an in-memory cache inside of a block.
class FileStore < Store class FileStore < Store
prepend Strategy::LocalCache
attr_reader :cache_path attr_reader :cache_path
DIR_FORMATTER = "%03X" DIR_FORMATTER = "%03X"
@ -20,7 +21,6 @@ module ActiveSupport
def initialize(cache_path, options = nil) def initialize(cache_path, options = nil)
super(options) super(options)
@cache_path = cache_path.to_s @cache_path = cache_path.to_s
extend Strategy::LocalCache
end end
# Deletes all items from the cache. In this case it deletes all the entries in the specified # Deletes all items from the cache. In this case it deletes all the entries in the specified

View file

@ -24,6 +24,31 @@ module ActiveSupport
# MemCacheStore implements the Strategy::LocalCache strategy which implements # MemCacheStore implements the Strategy::LocalCache strategy which implements
# an in-memory cache inside of a block. # an in-memory cache inside of a block.
class MemCacheStore < Store class MemCacheStore < Store
# Provide support for raw values in the local cache strategy.
module LocalCacheWithRaw # :nodoc:
protected
def read_entry(key, options)
entry = super
if options[:raw] && local_cache && entry
entry = deserialize_entry(entry.value)
end
entry
end
def write_entry(key, entry, options) # :nodoc:
retval = super
if options[:raw] && local_cache && retval
raw_entry = Entry.new(entry.value.to_s)
raw_entry.expires_at = entry.expires_at
local_cache.write_entry(key, raw_entry, options)
end
retval
end
end
prepend Strategy::LocalCache
prepend LocalCacheWithRaw
ESCAPE_KEY_CHARS = /[\x00-\x20%\x7F-\xFF]/n ESCAPE_KEY_CHARS = /[\x00-\x20%\x7F-\xFF]/n
# Creates a new Dalli::Client instance with specified addresses and options. # Creates a new Dalli::Client instance with specified addresses and options.
@ -63,9 +88,6 @@ module ActiveSupport
UNIVERSAL_OPTIONS.each{|name| mem_cache_options.delete(name)} UNIVERSAL_OPTIONS.each{|name| mem_cache_options.delete(name)}
@data = self.class.build_mem_cache(*(addresses + [mem_cache_options])) @data = self.class.build_mem_cache(*(addresses + [mem_cache_options]))
end end
extend Strategy::LocalCache
extend LocalCacheWithRaw
end end
# Reads multiple values from the cache using a single call to the # Reads multiple values from the cache using a single call to the
@ -181,28 +203,6 @@ module ActiveSupport
nil nil
end end
end end
# Provide support for raw values in the local cache strategy.
module LocalCacheWithRaw # :nodoc:
protected
def read_entry(key, options)
entry = super
if options[:raw] && local_cache && entry
entry = deserialize_entry(entry.value)
end
entry
end
def write_entry(key, entry, options) # :nodoc:
retval = super
if options[:raw] && local_cache && retval
raw_entry = Entry.new(entry.value.to_s)
raw_entry.expires_at = entry.expires_at
local_cache.write_entry(key, raw_entry, options)
end
retval
end
end
end end
end end
end end

View file

@ -8,10 +8,7 @@ module ActiveSupport
# be cached inside blocks that utilize this strategy. See # be cached inside blocks that utilize this strategy. See
# ActiveSupport::Cache::Strategy::LocalCache for more details. # ActiveSupport::Cache::Strategy::LocalCache for more details.
class NullStore < Store class NullStore < Store
def initialize(options = nil) prepend Strategy::LocalCache
super(options)
extend Strategy::LocalCache
end
def clear(options = nil) def clear(options = nil)
end end