class Berater::LuaScript
Attributes
source[R]
Public Class Methods
new(source)
click to toggle source
# File lib/berater/lua_script.rb, line 8 def initialize(source) @source = source end
Public Instance Methods
eval(redis, *args)
click to toggle source
# File lib/berater/lua_script.rb, line 16 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/berater/lua_script.rb, line 26 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/berater/lua_script.rb, line 34 def loaded?(redis) redis.script(:exists, sha) end
sha()
click to toggle source
# File lib/berater/lua_script.rb, line 12 def sha @sha ||= Digest::SHA1.hexdigest(minify) end
to_s()
click to toggle source
# File lib/berater/lua_script.rb, line 38 def to_s source end
Private Instance Methods
minify()
click to toggle source
# File lib/berater/lua_script.rb, line 44 def minify # trim comments (whole line and partial) # and whitespace (prefix and empty lines) @minify ||= source.gsub(/^\s*--.*\n|\s*--.*|^\s*|^$\n/, '').chomp end