Parent

Class Index [+]

Quicksearch

ActiveSupport::Cache::Entry

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

Constants

DEFAULT_COMPRESS_LIMIT

Attributes

created_at[R]
expires_in[R]

Public Class Methods

create(raw_value, created_at, options = {}) click to toggle source

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 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 = {}) click to toggle source

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

     # File 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

Public Instance Methods

compressed?() click to toggle source
     # File lib/active_support/cache.rb, line 594
594:       def compressed?
595:         @compressed
596:       end
expired?() click to toggle source

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

     # File 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() click to toggle source

Seconds since the epoch when the entry will expire.

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

Set a new time when the entry will expire.

     # File 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() click to toggle source

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

     # File lib/active_support/cache.rb, line 570
570:       def raw_value
571:         @value
572:       end
size() click to toggle source

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

     # File 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() click to toggle source

Get the value stored in the cache.

     # File 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

Private Instance Methods

should_compress?(serialized_value, options) click to toggle source
     # File lib/active_support/cache.rb, line 629
629:         def should_compress?(serialized_value, options)
630:           if options[:compress]
631:             compress_threshold = options[:compress_threshold] || DEFAULT_COMPRESS_LIMIT
632:             return true if serialized_value.size >= compress_threshold
633:           end
634:           false
635:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.