Module: WorkerRoulette::Lua
- Defined in:
- lib/worker_roulette/lua.rb
Class Method Summary collapse
- .cache ⇒ Object
- .call(lua_script, keys_accessed = [], args = [], &callback) ⇒ Object
- .clear_cache! ⇒ Object
- .eval(redis, lua_script, keys_accessed, args, &callback) ⇒ Object
- .sha(lua_script) ⇒ Object
Class Method Details
.cache ⇒ Object
17 18 19 |
# File 'lib/worker_roulette/lua.rb', line 17 def self.cache @cache.dup end |
.call(lua_script, keys_accessed = [], args = [], &callback) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/worker_roulette/lua.rb', line 5 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 |
.clear_cache! ⇒ Object
21 22 23 |
# File 'lib/worker_roulette/lua.rb', line 21 def self.clear_cache! @cache = {} end |
.eval(redis, lua_script, keys_accessed, args, &callback) ⇒ Object
25 26 27 28 29 |
# File 'lib/worker_roulette/lua.rb', line 25 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 |
.sha(lua_script) ⇒ Object
13 14 15 |
# File 'lib/worker_roulette/lua.rb', line 13 def self.sha(lua_script) @cache[lua_script] ||= Digest::SHA1.hexdigest(lua_script) end |