# File lib/ohm.rb, line 1394 def script(file, *args) begin cache = LUA_CACHE[redis.url] if cache.key?(file) sha = cache[file] else src = File.read(file) sha = redis.call("SCRIPT", "LOAD", src) cache[file] = sha end redis.call!("EVALSHA", sha, *args) rescue RuntimeError case $!.message when ErrorPatterns::NOSCRIPT LUA_CACHE[redis.url].clear retry when ErrorPatterns::DUPLICATE raise UniqueIndexViolation, $1 else raise $! end end end