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