Class: Qless::LuaScript

Inherits:
Object
  • Object
show all
Defined in:
lib/qless/lua_script.rb

Overview

Wraps a lua script. Knows how to reload it if necessary

Direct Known Subclasses

LuaPlugin

Defined Under Namespace

Modules: ScriptNotLoadedRedisCommandError

Constant Summary collapse

SCRIPT_ROOT =
File.expand_path('../lua', __FILE__)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, redis) ⇒ LuaScript

Returns a new instance of LuaScript.



12
13
14
15
16
# File 'lib/qless/lua_script.rb', line 12

def initialize(name, redis)
  @name  = name
  @redis = redis
  @sha   = Digest::SHA1.hexdigest(script_contents)
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



18
19
20
# File 'lib/qless/lua_script.rb', line 18

def name
  @name
end

#redisObject (readonly)

Returns the value of attribute redis.



18
19
20
# File 'lib/qless/lua_script.rb', line 18

def redis
  @redis
end

#shaObject (readonly)

Returns the value of attribute sha.



18
19
20
# File 'lib/qless/lua_script.rb', line 18

def sha
  @sha
end

Instance Method Details

#call(*argv) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/qless/lua_script.rb', line 24

def call(*argv)
  handle_no_script_error do
    _call(*argv)
  end
rescue Redis::CommandError => err
  if match = err.message.match('user_script:\d+:\s*(\w+.+$)')
    raise LuaScriptError.new(match[1])
  else
    raise err
  end
end

#reloadObject



20
21
22
# File 'lib/qless/lua_script.rb', line 20

def reload
  @sha = @redis.script(:load, script_contents)
end