Entry that is put into caches. It supports expiration time on entries and can compress values to save space in the cache.
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
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
# File lib/active_support/cache.rb, line 594 594: def compressed? 595: @compressed 596: end
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
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
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
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
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
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
# 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.
Generated with the Darkfish Rdoc Generator 1.1.6.