lib/redis/base_object.rb in redis-objects-0.8.0 vs lib/redis/base_object.rb in redis-objects-0.9.0

- old
+ new

@@ -11,7 +11,39 @@ def redis @myredis || ::Redis::Objects.redis end alias :inspect :to_s # Ruby 1.9.2 + + def set_expiration + if !@options[:expiration].nil? + redis.expire(@key, @options[:expiration]) if redis.ttl(@key) < 0 + elsif !@options[:expireat].nil? + redis.expireat(@key, @options[:expireat].to_i) if redis.ttl(@key) < 0 + end + end + + class << self + def expiration_filter(*names) + names.each do |name| + if ['=', '?', '!'].include? name.to_s[-1] + with_name = "#{name[0..-2]}_with_expiration#{name[-1]}".to_sym + without_name = "#{name[0..-2]}_without_expiration#{name[-1]}".to_sym + else + with_name = "#{name}_with_expiration".to_sym + without_name = "#{name}_without_expiration".to_sym + end + + alias_method without_name, name + + define_method(with_name) do |*args| + result = send(without_name, *args) + set_expiration + result + end + + alias_method name, with_name + end + end + end end end