class RedisOpen3::Enum
Constants
- EOF
magic :(
- EOF_REGX
- ERR
- ERR_REGX
Attributes
list_name[R]
Public Class Methods
new(list_name, opts={})
click to toggle source
# File lib/redis_open3/enum.rb, line 19 def initialize(list_name, opts={}) @list_name = list_name @timeout = opts[:timeout] @redis = opts[:redis] || Redis.new(opts[:redis_opts] || {}) end
Public Instance Methods
<<(input)
click to toggle source
# File lib/redis_open3/enum.rb, line 25 def <<(input) push(input) end
close()
click to toggle source
# File lib/redis_open3/enum.rb, line 29 def close push(EOF) end
delete()
click to toggle source
# File lib/redis_open3/enum.rb, line 42 def delete @redis.del(list_name) end
each(&block)
click to toggle source
# File lib/redis_open3/enum.rb, line 33 def each(&block) Enumerator.new do |y| until (line = pop.chomp) =~ EOF_REGX raise Error, "Received error signal." if line =~ ERR_REGX y << line end end.each(&block) end
fail()
click to toggle source
# File lib/redis_open3/enum.rb, line 46 def fail push(ERR) end
Private Instance Methods
pop()
click to toggle source
# File lib/redis_open3/enum.rb, line 57 def pop popped = @redis.blpop(list_name, @timeout) @redis.expire(list_name, @timeout + 10) if popped popped.last else raise TimeoutError, "Timeout of #{@timeout.inspect} seconds expired on list_name #{list_name.inspect}." end end
push(string)
click to toggle source
# File lib/redis_open3/enum.rb, line 52 def push(string) @redis.rpush(list_name, string) @redis.expire(list_name, @timeout + 10) end