class Redis::LuaScript
Constants
- VERSION
Attributes
source[R]
Public Class Methods
new(source)
click to toggle source
# File lib/redis/lua_script.rb, line 9 def initialize(source) @source = source.dup.freeze end
Public Instance Methods
eval(redis, *args)
click to toggle source
# File lib/redis/lua_script.rb, line 17 def eval(redis, *args) redis.evalsha(sha, *args) rescue Redis::CommandError => e raise unless e.message.include?("NOSCRIPT") # fall back to regular eval, which will trigger # script to be cached for next time redis.eval(minify, *args) end
load(redis)
click to toggle source
# File lib/redis/lua_script.rb, line 27 def load(redis) redis.script(:load, minify).tap do |sha| unless sha == self.sha raise "unexpected script SHA: expected #{self.sha}, got #{sha}" end end end
loaded?(redis)
click to toggle source
# File lib/redis/lua_script.rb, line 35 def loaded?(redis) redis.script(:exists, sha) end
sha()
click to toggle source
# File lib/redis/lua_script.rb, line 13 def sha @sha ||= Digest::SHA1.hexdigest(minify).freeze end
to_s()
click to toggle source
# File lib/redis/lua_script.rb, line 39 def to_s source end
Private Instance Methods
minify()
click to toggle source
# File lib/redis/lua_script.rb, line 45 def minify # trim comments (whole line and partial) # and whitespace (prefix and empty lines) @minify ||= source.gsub(/^\s*--.*\n|\s*--.*|^\s*|^$\n/, "").chomp.freeze end