Sha256: 2c84c53b5157e2d9e3f3526d06b3eaef90371e80404618d896a22ab8e165d58a
Contents?: true
Size: 1.3 KB
Versions: 4
Compression:
Stored size: 1.3 KB
Contents
require 'csv' require 'fileutils' module Forklift module Connection class Csv < Forklift::Base::Connection def initialize(config, forklift) @config = config @forklift = forklift end def config @config end def forklift @forklift end def read(size=forklift.config[:batch_size]) data = [] CSV.foreach(config[:file], headers: true, converters: :all) do |row| data << row.to_hash.symbolize_keys if(data.length == size) if block_given? yield data data = [] else return data end end end if block_given? yield data else return data end end def write(data, append=true) if (append == false) FileUtils.rm(config[:file], {force: true}) end if( !File.exists?(config[:file]) ) keys = data.first.keys row = {} keys.each do |k| row[k] = k end data = [row] + data end CSV.open(config[:file],'a') do |file| data.each do |row| file << row.values end end end private #/private end end end
Version data entries
4 entries across 4 versions & 1 rubygems