class SampleSkimmer

Public Class Methods

new(num_sample_rows, &callback) click to toggle source
# File lib/sample_skimmer.rb, line 2
def initialize(num_sample_rows, &callback)
  @num_sample_rows = num_sample_rows
  @callback = callback
  @samples = []
  @callback_called = false
end

Public Instance Methods

callbacks() click to toggle source
# File lib/sample_skimmer.rb, line 9
def callbacks
  { during_execute: collect_samples, after_execute: submit_data_if_unsubmitted }
end

Private Instance Methods

collect_samples() click to toggle source
# File lib/sample_skimmer.rb, line 15
def collect_samples
  lambda do |row, row_count|
    if row_count <= @num_sample_rows
      @samples << row
      if row_count == @num_sample_rows
        @callback.call(@samples)
        @callback_called = true
      end
    end
  end      
end
submit_data_if_unsubmitted() click to toggle source
# File lib/sample_skimmer.rb, line 27
def submit_data_if_unsubmitted
  ->(row_count) { @callback.call(@samples) unless @callback_called }
end