Sha256: 8173f0a8cbb6d913dc24bc43f3fcfcbfe1db0f164605a032423dbd121b23fc13
Contents?: true
Size: 908 Bytes
Versions: 3
Compression:
Stored size: 908 Bytes
Contents
module WorkerRoulette module Lua @cache = Hash.new def self.call(lua_script, keys_accessed = [], args = [], &callback) WorkerRoulette.tradesman_connection_pool.with do |redis| results = redis.evalsha(sha(lua_script), keys_accessed.length, *keys_accessed, *args) results.callback &callback results.errback {self.eval(redis, lua_script, keys_accessed, args, &callback)} end end def self.sha(lua_script) @cache[lua_script] ||= Digest::SHA1.hexdigest(lua_script) end def self.cache @cache.dup end def self.clear_cache! @cache = {} end def self.eval(redis, lua_script, keys_accessed, args, &callback) results = redis.eval(lua_script, keys_accessed.size, *keys_accessed, *args) results.callback &callback results.errback {|err_msg| raise EM::Hiredis::RedisError.new(err_msg)} end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
worker_roulette-0.1.0 | lib/worker_roulette/lua.rb |
worker_roulette-0.0.12 | lib/worker_roulette/lua.rb |
worker_roulette-0.0.11 | lib/worker_roulette/lua.rb |