Class: RedisEval::Script
- Inherits:
-
Object
- Object
- RedisEval::Script
- Defined in:
- lib/redis_eval/script.rb
Instance Attribute Summary collapse
-
#parent ⇒ Object
Returns the value of attribute parent.
- #redis ⇒ Object
-
#sha ⇒ Object
readonly
Returns the value of attribute sha.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
Class Method Summary collapse
Instance Method Summary collapse
- #execute(keys = [], argv = []) ⇒ Object
- #exist? ⇒ Boolean
-
#initialize(src, with_load: true) ⇒ Script
constructor
A new instance of Script.
- #load ⇒ Object
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
#parent ⇒ Object
Returns the value of attribute parent.
3 4 5 |
# File 'lib/redis_eval/script.rb', line 3 def parent @parent end |
#redis ⇒ Object
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 |
#sha ⇒ Object (readonly)
Returns the value of attribute sha.
4 5 6 |
# File 'lib/redis_eval/script.rb', line 4 def sha @sha end |
#source ⇒ Object (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. =~ /NOSCRIPT/ redis.eval(source, Array(keys), Array(argv)) end |
#exist? ⇒ Boolean
24 25 26 |
# File 'lib/redis_eval/script.rb', line 24 def exist? redis_without_namespace.script(:exists, sha) end |
#load ⇒ Object
20 21 22 |
# File 'lib/redis_eval/script.rb', line 20 def load redis_without_namespace.script(:load, source) end |