class Drugbank::Collector

Public Class Methods

new(batch_size, &block) click to toggle source
# File lib/drugbank/collector.rb, line 3
def initialize(batch_size, &block)
  @batch_size = batch_size
  @counter = 0
  @batch = []
  self.block = block
end

Public Instance Methods

<<(value) click to toggle source
# File lib/drugbank/collector.rb, line 10
def <<(value)
  @batch << value
  @counter += 1
  collect_batch if @counter % @batch_size == 0
end
block=(block) click to toggle source
# File lib/drugbank/collector.rb, line 22
def block=(block)
  @block = block
end
collect_batch() click to toggle source
# File lib/drugbank/collector.rb, line 16
def collect_batch
  process_batch unless @batch.empty?
  @batch = []
  puts "  #{@counter}"
end
process_batch() click to toggle source
# File lib/drugbank/collector.rb, line 26
def process_batch
  puts "Processing batch .."
  errors = []
  begin
    block.call(@batch, errors)
  rescue Exception => e
    errors << "Error: BATCH FAILED - #{e.message}"
  ensure
    puts errors.join("\n")
    puts "..done"
  end
end

Private Instance Methods

block() click to toggle source
# File lib/drugbank/collector.rb, line 40
def block
  @block
end