Class: Cure::Export::CsvProcessor

Inherits:
BaseProcessor show all
Includes:
Helpers::FileHelpers
Defined in:
lib/cure/export/base_processor.rb

Instance Attribute Summary collapse

Attributes inherited from BaseProcessor

#named_range

Instance Method Summary collapse

Methods included from Helpers::FileHelpers

#clean_dir, #open_file, #read_file, #with_file, #with_temp_dir

Methods inherited from BaseProcessor

#initialize, #process_row

Methods included from Log

#log_debug, #log_error, #log_info, #log_trace, #log_warn

Constructor Details

This class inherits a constructor from Cure::Export::BaseProcessor

Instance Attribute Details

#csv_fileObject (readonly)

Returns the value of attribute csv_file.



76
77
78
# File 'lib/cure/export/base_processor.rb', line 76

def csv_file
  @csv_file
end

Instance Method Details

#cleanupObject



104
105
106
107
108
# File 'lib/cure/export/base_processor.rb', line 104

def cleanup
ensure
  log_info File.basename(@csv_file)
  @csv_file.close
end

#process(row) ⇒ Object



78
79
80
81
# File 'lib/cure/export/base_processor.rb', line 78

def process(row)
  @csv_file.write(row.keys.to_csv) if @processed.zero?
  @csv_file.write(row.values.to_csv)
end

#setupObject



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/cure/export/base_processor.rb', line 83

def setup
  log_info "Exporting [#{@named_range}] to CSV..."

  output_dir = @opts[:directory]
  file_name = @opts[:file_name]

  log_info("Exporting file to [#{output_dir}/#{file_name}]")
  # file_name = "#{file_name}-#{Time.now.utc.strftime("%Y-%m-%dT%H:%M:%S%-z")}"

  path = "#{output_dir}/#{file_name}"

  # clean_dir(output_dir)

  dir = File.dirname(path)
  FileUtils.mkdir_p(dir) unless File.directory?(dir)

  path = "#{path}.csv"
  @csv_file = File.open(path, "w")
  @processed = 0
end