Sha256: b1d5681956e0e0753135220d368ff1313bef14d8683449acbf643c87690e1222
Contents?: true
Size: 1 KB
Versions: 2
Compression:
Stored size: 1 KB
Contents
class Chronicle::Etl::Runner def initialize(options) @options = options instantiate_etl_classes end def run! progress_bar = Chronicle::Etl::Utils::ProgressBarWrapper.new(@extractor.results_count) @loader.start @extractor.extract do |result, i| @loader.first_load(result) if i == 0 transformed_data = @transformer.transform(result) @loader.load(transformed_data) progress_bar.increment end progress_bar.finish @loader.finish end private def instantiate_etl_classes @extractor = get_etl_class(:extractor, @options[:extractor][:name]).new(@options[:extractor][:options]) @transformer = get_etl_class(:transformer, @options[:transformer][:name]).new(@options[:transformer][:options]) @loader = get_etl_class(:loader, @options[:loader][:name]).new(@options[:loader][:options]) end def get_etl_class(phase, name) klass_name = "Chronicle::Etl::#{phase.to_s.capitalize}s::#{name.capitalize}" Object.const_get(klass_name) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
chronicle-etl-0.1.1 | lib/chronicle/etl/runner.rb |
chronicle-etl-0.1.0 | lib/chronicle/etl/runner.rb |