Sha256: ba953ac790d566e516c6544cda996cb8d27935db29c34ec79a5ee21025a8f10b
Contents?: true
Size: 907 Bytes
Versions: 1
Compression:
Stored size: 907 Bytes
Contents
module Services class Base module UniquenessChecker def self.prepended(mod) mod.const_set :NotUniqueError, Class.new(mod::Error) end def call(*args) # TODO: Check that Services.configuration.redis is set key = unique_key(args) if Services.configuration.redis.exists(key) raise self.class::NotUniqueError else Services.configuration.redis.setex key, 60 * 60, Time.now begin super ensure Services.configuration.redis.del key end end end private def unique_key(args) # TODO: symbolize keys in hashes in args and sort hashes by key args = args.dup key = [ 'services', 'uniqueness', self.class.to_s, Digest::MD5.hexdigest(args.to_s) ].join(':') end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
services-0.0.2 | lib/services/base/uniqueness_checker.rb |