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 540
540:         def create (raw_value, created_at, options = {})
541:           entry = new(nil)
542:           entry.instance_variable_set(:@value, raw_value)
543:           entry.instance_variable_set(:@created_at, created_at.to_f)
544:           entry.instance_variable_set(:@compressed, !!options[:compressed])
545:           entry.instance_variable_set(:@expires_in, options[:expires_in])
546:           entry
547:         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 552
552:       def initialize(value, options = {})
553:         @compressed = false
554:         @expires_in = options[:expires_in]
555:         @expires_in = @expires_in.to_f if @expires_in
556:         @created_at = Time.now.to_f
557:         if value
558:           if should_compress?(value, options)
559:             @value = Zlib::Deflate.deflate(Marshal.dump(value))
560:             @compressed = true
561:           else
562:             @value = value
563:           end
564:         else
565:           @value = nil
566:         end
567:       end

Public Instance Methods

compressed?() click to toggle source
     # File lib/active_support/cache.rb, line 585
585:       def compressed?
586:         @compressed
587:       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 591
591:       def expired?
592:         if @expires_in && @created_at + @expires_in <= Time.now.to_f
593:           true
594:         else
595:           false
596:         end
597:       end
expires_at() click to toggle source

Seconds since the epoch when the entry will expire.

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

Set a new time when the entry will expire.

     # File lib/active_support/cache.rb, line 600
600:       def expires_at=(time)
601:         if time
602:           @expires_in = time.to_f - @created_at
603:         else
604:           @expires_in = nil
605:         end
606:       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 615
615:       def size
616:         if @value.nil?
617:           0
618:         elsif @value.respond_to?(:bytesize)
619:           @value.bytesize
620:         else
621:           Marshal.dump(@value).bytesize
622:         end
623:       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 @value
577:           val = compressed? ? Marshal.load(Zlib::Inflate.inflate(@value)) : @value
578:           unless val.frozen?
579:             val.freeze rescue nil
580:           end
581:           val
582:         end
583:       end

Private Instance Methods

should_compress?(value, options) click to toggle source
     # File lib/active_support/cache.rb, line 626
626:         def should_compress?(value, options)
627:           if options[:compress] && value
628:             unless value.is_a?(Numeric)
629:               compress_threshold = options[:compress_threshold] || DEFAULT_COMPRESS_LIMIT
630:               serialized_value = value.is_a?(String) ? value : Marshal.dump(value)
631:               return true if serialized_value.size >= compress_threshold
632:             end
633:           end
634:           false
635:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.