class RedisEval::Script
Attributes
parent[RW]
redis[W]
sha[R]
source[R]
Public Class Methods
build_from_parent(src, parent, with_load: true)
click to toggle source
# File lib/redis_eval/script.rb, line 7 def self.build_from_parent(src, parent, with_load: true) script = new(src, with_load: false) script.parent = parent script.load if with_load script end
new(src, with_load: true)
click to toggle source
# File lib/redis_eval/script.rb, line 14 def initialize(src, with_load: true) @source = src @sha = Digest::SHA1.hexdigest(@source) self.load if with_load end
Public Instance Methods
execute(keys = [], argv = [])
click to toggle source
# File lib/redis_eval/script.rb, line 28 def execute(keys = [], argv = []) redis.evalsha(sha, Array(keys), Array(argv)) rescue Redis::CommandError => e raise unless e.message =~ /NOSCRIPT/ redis.eval(source, Array(keys), Array(argv)) end
exist?()
click to toggle source
# File lib/redis_eval/script.rb, line 24 def exist? redis_without_namespace.script(:exists, sha) end
load()
click to toggle source
# File lib/redis_eval/script.rb, line 20 def load redis_without_namespace.script(:load, source) end
redis()
click to toggle source
# File lib/redis_eval/script.rb, line 36 def redis return @redis if instance_variable_defined?(:@redis) return parent.redis unless parent.nil? Redis.current end
Private Instance Methods
redis_without_namespace()
click to toggle source
# File lib/redis_eval/script.rb, line 45 def redis_without_namespace defined?(Redis::Namespace) && redis.is_a?(Redis::Namespace) ? redis.redis : redis end