module Moneta::ExpiresSupport
This mixin handles the calculation of expiration times.
Protected Class Methods
# File lib/moneta/expires_support.rb, line 53 def included(base) base.supports(:expires) if base.respond_to?(:supports) base.config :expires end
Protected Instance Methods
Calculates the time when something will expire.
This method considers false and 0 as “no-expire” and every positive number as a time to live in seconds.
@param [Hash] options Options hash @option options [0,false,nil,Numeric] :expires expires value given by user @param [0,false,nil,Numeric] default default expiration time
@return [false] if it should not expire @return [Time] the time when something should expire @return [nil] if it is not known
# File lib/moneta/expires_support.rb, line 20 def expires_at(options, default = config.expires) value = expires_value(options, default) Numeric === value ? Time.now + value : value end
Calculates the number of seconds something should last.
This method considers false and 0 as “no-expire” and every positive number as a time to live in seconds.
@param [Hash] options Options hash @option options [0,false,nil,Numeric] :expires expires value given by user @param [0,false,nil,Numeric] default default expiration time
@return [false] if it should not expire @return [Numeric] seconds until expiration @return [nil] if it is not known
# File lib/moneta/expires_support.rb, line 37 def expires_value(options, default = config.expires) case value = options[:expires] when 0, false false when nil default ? default.to_r : nil when Numeric value = value.to_r raise ArgumentError, ":expires must be a positive value, got #{value}" if value < 0 value else raise ArgumentError, ":expires must be Numeric or false, got #{value.inspect}" end end