Sha256: 561f4eb8d407428efc990fd10941bd8c59c5c41772622b8cbb5d5d7e5414bfcc
Contents?: true
Size: 1 KB
Versions: 1
Compression:
Stored size: 1 KB
Contents
module Enumerable def parallel ParallelEnumerable.new(self) end end class ParallelEnumerable def initialize(enumerable) @enumerable = enumerable end def each enumerable.map do |item| Thread.new do begin yield item rescue Exception # rescues StandardError by default; but we want to rescue and report all errors Houston.report_exception $! ensure ActiveRecord::Base.clear_active_connections! end end end.each(&:join) end def map queue = Queue.new each do |item| queue << yield(item) end [].tap do |results| results.push queue.pop until queue.empty? end end def method_missing(method_name, *args, &block) return super unless enumerable.respond_to?(method_name) $stderr.puts "[parallel-enumerable] ##{method_name} is not defined" enumerable.public_send(method_name, *args, &block) end private attr_reader :enumerable end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
houston-core-0.5.0.beta1 | lib/parallel_enumerable.rb |