Sha256: 8414319c0dd63361504db5ade0877ab236614ebd43f76c09c8742b41a526f0b9
Contents?: true
Size: 963 Bytes
Versions: 12
Compression:
Stored size: 963 Bytes
Contents
module Killbill module Plugin module ActiveMerchant module ActiveRecord require 'active_record' # Closest from a streaming API as we can get with ActiveRecord class StreamyResultSet include Enumerable def initialize(limit, batch_size = 100, &delegate) @limit = limit @batch = [batch_size, limit].min @delegate = delegate end def each(&block) (0..(@limit - @batch)).step(@batch) do |i| result = @delegate.call(i, @batch) block.call(result) # Optimization: bail out if no more results break if result.nil? || result.empty? end if @batch > 0 # Make sure to return DB connections to the Pool ::ActiveRecord::Base.connection.close end def to_a super.to_a.flatten end end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems