Files

Class/Module Index [+]

Quicksearch

Moneta::ExpiresSupport

This mixin handles the calculation of expiration times.

Attributes

default_expires[RW]

Protected Class Methods

included(base) click to toggle source
# File lib/moneta/mixins.rb, line 339
def self.included(base)
  base.supports(:expires) if base.respond_to?(:supports)
end

Protected Instance Methods

expires_at(options, default = @default_expires) click to toggle source

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/mixins.rb, line 307
def expires_at(options, default = @default_expires)
  value = expires_value(options, default)
  Numeric === value ? Time.now + value : value
end
expires_value(options, default = @default_expires) click to toggle source

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/mixins.rb, line 324
def expires_value(options, default = @default_expires)
  case value = options[:expires]
  when 0, false
    false
  when nil
    default ? default.to_i : nil
  when Numeric
    value = value.to_i
    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

[Validate]

Generated with the Darkfish Rdoc Generator 2.