Class: ActiveSupport::Cache::Entry
- Inherits:
-
Object
- Object
- ActiveSupport::Cache::Entry
- Defined in:
- activesupport/lib/active_support/cache.rb
Overview
Entry that is put into caches. It supports expiration time on entries and can compress values to save space in the cache.
Constant Summary
- DEFAULT_COMPRESS_LIMIT =
16.kilobytes
Instance Attribute Summary (collapse)
-
- (Object) created_at
readonly
Returns the value of attribute created_at.
-
- (Object) expires_in
readonly
Returns the value of attribute expires_in.
Class Method Summary (collapse)
-
+ (Object) create(raw_value, created_at, options = {})
Create an entry with internal attributes set.
Instance Method Summary (collapse)
- - (Boolean) compressed?
-
- (Boolean) expired?
Check if the entry is expired.
-
- (Object) expires_at
Seconds since the epoch when the entry will expire.
-
- (Object) expires_at=(time)
Set a new time when the entry will expire.
-
- (Entry) initialize(value, options = {})
constructor
Create a new cache entry for the specified value.
-
- (Object) raw_value
Get the raw value.
-
- (Object) size
Returns the size of the cached value.
-
- (Object) value
Get the value stored in the cache.
Constructor Details
- (Entry) initialize(value, options = {})
Create a new cache entry for the specified value. Options supported are :compress, :compress_threshold, and :expires_in.
553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 |
# File 'activesupport/lib/active_support/cache.rb', line 553 def initialize(value, = {}) @compressed = false @expires_in = [:expires_in] @expires_in = @expires_in.to_f if @expires_in @created_at = Time.now.to_f if value if should_compress?(value, ) @value = Zlib::Deflate.deflate(Marshal.dump(value)) @compressed = true else @value = value end else @value = nil end end |
Instance Attribute Details
- (Object) created_at (readonly)
Returns the value of attribute created_at
533 534 535 |
# File 'activesupport/lib/active_support/cache.rb', line 533 def created_at @created_at end |
- (Object) expires_in (readonly)
Returns the value of attribute expires_in
533 534 535 |
# File 'activesupport/lib/active_support/cache.rb', line 533 def expires_in @expires_in end |
Class Method Details
+ (Object) 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.
541 542 543 544 545 546 547 548 |
# File 'activesupport/lib/active_support/cache.rb', line 541 def create (raw_value, created_at, = {}) 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, !![:compressed]) entry.instance_variable_set(:@expires_in, [:expires_in]) entry end |
Instance Method Details
- (Boolean) compressed?
586 587 588 |
# File 'activesupport/lib/active_support/cache.rb', line 586 def compressed? @compressed end |
- (Boolean) expired?
Check if the entry is expired. The expires_in parameter can override the value set when the entry was created.
592 593 594 |
# File 'activesupport/lib/active_support/cache.rb', line 592 def expired? @expires_in && @created_at + @expires_in <= Time.now.to_f end |
- (Object) expires_at
Seconds since the epoch when the entry will expire.
606 607 608 |
# File 'activesupport/lib/active_support/cache.rb', line 606 def expires_at @expires_in ? @created_at + @expires_in : nil end |
- (Object) expires_at=(time)
Set a new time when the entry will expire.
597 598 599 600 601 602 603 |
# File 'activesupport/lib/active_support/cache.rb', line 597 def expires_at=(time) if time @expires_in = time.to_f - @created_at else @expires_in = nil end end |
- (Object) raw_value
Get the raw value. This value may be serialized and compressed.
571 572 573 |
# File 'activesupport/lib/active_support/cache.rb', line 571 def raw_value @value end |
- (Object) size
Returns the size of the cached value. This could be less than value.size if the data is compressed.
612 613 614 615 616 617 618 619 620 |
# File 'activesupport/lib/active_support/cache.rb', line 612 def size if @value.nil? 0 elsif @value.respond_to?(:bytesize) @value.bytesize else Marshal.dump(@value).bytesize end end |
- (Object) value
Get the value stored in the cache.
576 577 578 579 580 581 582 583 584 |
# File 'activesupport/lib/active_support/cache.rb', line 576 def value if @value val = compressed? ? Marshal.load(Zlib::Inflate.inflate(@value)) : @value unless val.frozen? val.freeze rescue nil end val end end |