Sha256: 78c7be0fd01715b0d519b0c5e6a6e7c2889bd49cfe8b2bcde08eafecff967a80
Contents?: true
Size: 1.89 KB
Versions: 4
Compression:
Stored size: 1.89 KB
Contents
module Moneta # This mixin handles the calculation of expiration times. # # module ExpiresSupport protected # 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 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 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 class << self def included(base) base.supports(:expires) if base.respond_to?(:supports) base.config :expires end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
moneta-1.6.0 | lib/moneta/expires_support.rb |
moneta-1.5.2 | lib/moneta/expires_support.rb |
moneta-1.5.1 | lib/moneta/expires_support.rb |
moneta-1.5.0 | lib/moneta/expires_support.rb |