# File lib/cabin/mixins/pipe.rb, line 31 def pipe(io_to_method_map, &block) fds = io_to_method_map.keys while !fds.empty? readers, _, _ = IO.select(fds, nil, nil, nil) readers.each do |fd| begin line = fd.readline.chomp rescue EOFError fd.close rescue nil fds.delete(fd) next end method_name = io_to_method_map[fd] block.call(line, method_name) if block_given? send(method_name, line) end # readers.each end # while !fds.empty? end