class Chronicle::ETL::Runner
Public Class Methods
new(job)
click to toggle source
# File lib/chronicle/etl/runner.rb, line 4 def initialize(job) @job = job @job_logger = Chronicle::ETL::JobLogger.new(@job) end
Public Instance Methods
run!()
click to toggle source
# File lib/chronicle/etl/runner.rb, line 9 def run! extractor = @job.instantiate_extractor loader = @job.instantiate_loader @job_logger.start loader.start total = extractor.results_count progress_bar = Chronicle::ETL::Utils::ProgressBar.new(title: 'Running job', total: total) extractor.extract do |data, metadata| transformer = @job.instantiate_transformer(data) record = transformer.transform unless record.is_a?(Chronicle::ETL::Models::Base) raise Chronicle::ETL::InvalidTransformedRecordError, "Transformed data is not a type of Chronicle::ETL::Models" end @job_logger.log_transformation(transformer) loader.load(record) progress_bar.increment end progress_bar.finish loader.finish @job_logger.finish @job_logger.save end