Class: RedisEval::Script

Inherits:
Object
  • Object
show all
Defined in:
lib/redis_eval/script.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(src, with_load: true) ⇒ Script

Returns a new instance of Script.



14
15
16
17
18
# 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

Instance Attribute Details

#parentObject

Returns the value of attribute parent.



3
4
5
# File 'lib/redis_eval/script.rb', line 3

def parent
  @parent
end

#redisObject



36
37
38
39
40
41
# 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

#shaObject (readonly)

Returns the value of attribute sha.



4
5
6
# File 'lib/redis_eval/script.rb', line 4

def sha
  @sha
end

#sourceObject (readonly)

Returns the value of attribute source.



4
5
6
# File 'lib/redis_eval/script.rb', line 4

def source
  @source
end

Class Method Details

.build_from_parent(src, parent, with_load: true) ⇒ Object



7
8
9
10
11
12
# 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

Instance Method Details

#execute(keys = [], argv = []) ⇒ Object



28
29
30
31
32
33
34
# 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?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/redis_eval/script.rb', line 24

def exist?
  redis_without_namespace.script(:exists, sha)
end

#loadObject



20
21
22
# File 'lib/redis_eval/script.rb', line 20

def load
  redis_without_namespace.script(:load, source)
end