class Redis::Scripting::Module

Attributes

redis[RW]
source_dir[R]

Public Class Methods

new(redis, source_dir, opts = {}) click to toggle source
# File lib/redis/scripting/module.rb, line 11
def initialize(redis, source_dir, opts = {})
  @redis = redis
  @source_dir = source_dir
  @scripts = {}
  load_scripts()
end

Public Instance Methods

inspect() click to toggle source
# File lib/redis/scripting/module.rb, line 25
def inspect
  %{<%s: 0x%x @source_dir="%s" @redis=%s>} % [self.class, object_id, source_dir, redis]
end
run(script_name, keys, argv, redis = self.redis) click to toggle source
# File lib/redis/scripting/module.rb, line 18
def run(script_name, keys, argv, redis = self.redis)
  script = @scripts[script_name.to_s]
  raise(ArgumentError, "unknown script: #{script_name}") unless script

  script.run(redis, keys, argv)
end

Private Instance Methods

load_scripts() click to toggle source
# File lib/redis/scripting/module.rb, line 31
def load_scripts
  headers = Dir.glob(File.join(source_dir, "includes", "*.lua")).map { |include_name|
    File.read(include_name)
  }

  if !headers.empty?
    header_source = headers.join("\n\n") + "\n\n"
  end

  Dir.glob(File.join(source_dir, "*.lua")).each do |filename|
    script = Redis::Scripting::Script.new(filename, script_header: header_source)
    @scripts[script.name] = script
  end
end