class ActiveSupport::Cache::Entry
to save space in the cache.
Entry that is put into caches. It supports expiration time on entries and can compress values
def compressed?
def compressed? @compressed end
def create (raw_value, created_at, options = {})
used by implementations that store cache entries in a native format instead
Create an entry with internal attributes set. This method is intended to be
def create (raw_value, created_at, options = {}) entry = new(nil) entry.instance_variable_set(:@value, raw_value) entry.instance_variable_set(:@created_at, created_at.to_f) entry.instance_variable_set(:@compressed, !!options[:compressed]) entry.instance_variable_set(:@expires_in, options[:expires_in]) entry end
def expired?
Check if the entry is expired. The +expires_in+ parameter can override the
def expired? if @expires_in && @created_at + @expires_in <= Time.now.to_f true else false end end
def expires_at
def expires_at @expires_in ? @created_at + @expires_in : nil end
def expires_at=(time)
def expires_at=(time) if time @expires_in = time.to_f - @created_at else @expires_in = nil end end
def initialize(value, options = {})
Create a new cache entry for the specified value. Options supported are
def initialize(value, options = {}) @compressed = false @expires_in = options[:expires_in] @expires_in = @expires_in.to_f if @expires_in @created_at = Time.now.to_f if value if should_compress?(value, options) @value = Zlib::Deflate.deflate(Marshal.dump(value)) @compressed = true else @value = value end else @value = nil end end
def raw_value
def raw_value @value end
def should_compress?(value, options)
def should_compress?(value, options) if options[:compress] && value unless value.is_a?(Numeric) compress_threshold = options[:compress_threshold] || DEFAULT_COMPRESS_LIMIT serialized_value = value.is_a?(String) ? value : Marshal.dump(value) return true if serialized_value.size >= compress_threshold end end false end
def size
Get the size of the cached value. This could be less than value.size
def size if @value.nil? 0 elsif @value.respond_to?(:bytesize) @value.bytesize else Marshal.dump(@value).bytesize end end
def value
def value if @value val = compressed? ? Marshal.load(Zlib::Inflate.inflate(@value)) : @value unless val.frozen? val.freeze rescue nil end val end end