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
541:         def create(raw_value, created_at, options = {})
542:           entry = new(nil)
543:           entry.instance_variable_set(:@value, raw_value)
544:           entry.instance_variable_set(:@created_at, created_at.to_f)
545:           entry.instance_variable_set(:@compressed, options[:compressed])
546:           entry.instance_variable_set(:@expires_in, options[:expires_in])
547:           entry
548:         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
553:       def initialize(value, options = {})
554:         @compressed = false
555:         @expires_in = options[:expires_in]
556:         @expires_in = @expires_in.to_f if @expires_in
557:         @created_at = Time.now.to_f
558:         if value.nil?
559:           @value = nil
560:         else
561:           @value = Marshal.dump(value)
562:           if should_compress?(@value, options)
563:             @value = Zlib::Deflate.deflate(@value)
564:             @compressed = true
565:           end
566:         end
567:       end
Instance Public methods
compressed?()
     # File activesupport/lib/active_support/cache.rb, line 594
594:       def compressed?
595:         @compressed
596:       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
600:       def expired?
601:         @expires_in && @created_at + @expires_in <= Time.now.to_f
602:       end
expires_at()

Seconds since the epoch when the entry will expire.

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

Set a new time when the entry will expire.

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

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

     # File activesupport/lib/active_support/cache.rb, line 570
570:       def raw_value
571:         @value
572:       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
620:       def size
621:         if @value.nil?
622:           0
623:         else
624:           @value.bytesize
625:         end
626:       end
value()

Get the value stored in the cache.

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