Class: Processor::Data::ActiveRecordBatchProcessor

Inherits:
NullProcessor
  • Object
show all
Defined in:
lib/processor/data/active_record_batch_processor.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from NullProcessor

#error, #finish, #record_error, #start

Constructor Details

#initialize(source:, presenter: -> { Hash.new }, output:, batch_size: 1000) ⇒ ActiveRecordBatchProcessor

Returns a new instance of ActiveRecordBatchProcessor.



8
9
10
11
12
13
# File 'lib/processor/data/active_record_batch_processor.rb', line 8

def initialize(source:, presenter: -> { Hash.new }, output:, batch_size: 1000)
  @source = source
  @presenter = presenter
  @output = output
  @batch_size = batch_size
end

Instance Attribute Details

#sourceObject (readonly)

Returns the value of attribute source.



6
7
8
# File 'lib/processor/data/active_record_batch_processor.rb', line 6

def source
  @source
end

Instance Method Details

#finalizeObject



28
29
30
# File 'lib/processor/data/active_record_batch_processor.rb', line 28

def finalize
  output.close
end

#process(record) ⇒ Object



19
20
21
22
# File 'lib/processor/data/active_record_batch_processor.rb', line 19

def process(record)
  output.write presenter.call(record)
  "OK"
end

#record_id(record) ⇒ Object



24
25
26
# File 'lib/processor/data/active_record_batch_processor.rb', line 24

def record_id(record)
  record.id
end

#recordsObject



15
16
17
# File 'lib/processor/data/active_record_batch_processor.rb', line 15

def records
  source.find_each(batch_size: batch_size)
end

#total_recordsObject



32
33
34
# File 'lib/processor/data/active_record_batch_processor.rb', line 32

def total_records
  @total_records ||= source.count
end