Class: RedisEval::Script
- Inherits:
-
Object
- Object
- RedisEval::Script
- Defined in:
- lib/redis_eval/script.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#script ⇒ Object
readonly
Returns the value of attribute script.
-
#sha ⇒ Object
readonly
Returns the value of attribute sha.
Class Method Summary collapse
Instance Method Summary collapse
- #execute(keys = [], argv = []) ⇒ Object
- #exist? ⇒ Boolean
-
#initialize(name, script) ⇒ Script
constructor
A new instance of Script.
- #redis ⇒ Object
Constructor Details
#initialize(name, script) ⇒ Script
Returns a new instance of Script.
27 28 29 30 31 |
# File 'lib/redis_eval/script.rb', line 27 def initialize(name, script) @name = name @script = script @sha = Digest::SHA1.hexdigest(script) end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/redis_eval/script.rb', line 3 def name @name end |
#script ⇒ Object (readonly)
Returns the value of attribute script.
3 4 5 |
# File 'lib/redis_eval/script.rb', line 3 def script @script end |
#sha ⇒ Object (readonly)
Returns the value of attribute sha.
3 4 5 |
# File 'lib/redis_eval/script.rb', line 3 def sha @sha end |
Class Method Details
.build_from_path(path) ⇒ RedisEval::Script
8 9 10 11 12 |
# File 'lib/redis_eval/script.rb', line 8 def build_from_path(path) name = path.basename(".*").to_s script = File.read(path) new(name, script) end |
.flush ⇒ Object
18 19 20 |
# File 'lib/redis_eval/script.rb', line 18 def flush redis.script(:flush) end |
.load(script) ⇒ Object
14 15 16 |
# File 'lib/redis_eval/script.rb', line 14 def load(script) redis.script(:load, script) end |
Instance Method Details
#execute(keys = [], argv = []) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/redis_eval/script.rb', line 33 def execute(keys = [], argv = []) redis.evalsha(sha, Array(keys), Array(argv)) rescue Redis::CommandError => e if e. =~ /NOSCRIPT/ redis.eval(script, Array(keys), Array(argv)) else raise end end |
#exist? ⇒ Boolean
43 44 45 |
# File 'lib/redis_eval/script.rb', line 43 def exist? redis.script(:exists, sha) end |
#redis ⇒ Object
47 48 49 |
# File 'lib/redis_eval/script.rb', line 47 def redis self.class.redis end |