Entry that is put into caches. It supports expiration time on entries and can compress values to save space in the cache.

Methods
C
E
N
R
S
V
Constants
DEFAULT_COMPRESS_LIMIT = 16.kilobytes
 
Attributes
[R] created_at
[R] expires_in
Class Public methods
create(raw_value, created_at, options = {})

Create an entry with internal attributes set. This method is intended to be used by implementations that store cache entries in a native format instead of as serialized Ruby objects.

# File activesupport/lib/active_support/cache.rb, line 541
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
new(value, options = {})

Create a new cache entry for the specified value. Options supported are :compress, :compress_threshold, and :expires_in.

# File activesupport/lib/active_support/cache.rb, line 553
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.nil?
    @value = nil
  else
    @value = Marshal.dump(value)
    if should_compress?(@value, options)
      @value = Zlib::Deflate.deflate(@value)
      @compressed = true
    end
  end
end
Instance Public methods
compressed?()
# File activesupport/lib/active_support/cache.rb, line 594
def compressed?
  @compressed
end
expired?()

Check if the entry is expired. The expires_in parameter can override the value set when the entry was created.

# File activesupport/lib/active_support/cache.rb, line 600
def expired?
  @expires_in && @created_at + @expires_in <= Time.now.to_f
end
expires_at()

Seconds since the epoch when the entry will expire.

# File activesupport/lib/active_support/cache.rb, line 614
def expires_at
  @expires_in ? @created_at + @expires_in : nil
end
expires_at=(time)

Set a new time when the entry will expire.

# File activesupport/lib/active_support/cache.rb, line 605
def expires_at=(time)
  if time
    @expires_in = time.to_f - @created_at
  else
    @expires_in = nil
  end
end
raw_value()

Get the raw value. This value may be serialized and compressed.

# File activesupport/lib/active_support/cache.rb, line 570
def raw_value
  @value
end
size()

Returns the size of the cached value. This could be less than value.size if the data is compressed.

# File activesupport/lib/active_support/cache.rb, line 620
def size
  if @value.nil?
    0
  else
    @value.bytesize
  end
end
value()

Get the value stored in the cache.

# File activesupport/lib/active_support/cache.rb, line 575
def value
  # If the original value was exactly false @value is still true because
  # it is marshalled and eventually compressed. Both operations yield
  # strings.
  if @value
    # In rails 3.1 and earlier values in entries did not marshaled without
    # options[:compress] and if it's Numeric.
    # But after commit a263f377978fc07515b42808ebc1f7894fafaa3a
    # all values in entries are marshalled. And after that code below expects
    # that all values in entries will be marshaled (and will be strings). 
    # So here we need a check for old ones.
    begin
      Marshal.load(compressed? ? Zlib::Inflate.inflate(@value) : @value)
    rescue TypeError
      compressed? ? Zlib::Inflate.inflate(@value) : @value
    end
  end
end