Module: WorkerTools::CsvOutput

Defined in:
lib/worker_tools/csv_output.rb

Instance Method Summary collapse

Instance Method Details

#csv_output_add_attachmentObject



55
56
57
# File 'lib/worker_tools/csv_output.rb', line 55

def csv_output_add_attachment
  model.add_attachment(csv_output_tmp_file, file_name: csv_output_file_name, content_type: 'text/csv')
end

#csv_output_col_sepObject



35
36
37
# File 'lib/worker_tools/csv_output.rb', line 35

def csv_output_col_sep
  ';'
end

#csv_output_column_headersObject



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/worker_tools/csv_output.rb', line 9

def csv_output_column_headers
  # These columns are used to set the headers, also
  # to set the row values depending on your implementation.
  #
  # To ignore them set it to _false_
  #
  # Ex:
  # @csv_output_column_headers ||= {
  #   foo: 'Foo Header',
  #   bar: 'Bar Header'
  # }
  raise "csv_output_column_headers has to be defined in #{self}"
end

#csv_output_csv_optionsObject



47
48
49
# File 'lib/worker_tools/csv_output.rb', line 47

def csv_output_csv_options
  { col_sep: csv_output_col_sep, encoding: csv_output_encoding }
end

#csv_output_encodingObject



39
40
41
# File 'lib/worker_tools/csv_output.rb', line 39

def csv_output_encoding
  Encoding::UTF_8
end

#csv_output_entriesObject



5
6
7
# File 'lib/worker_tools/csv_output.rb', line 5

def csv_output_entries
  raise "csv_output_entries has to be defined in #{self}"
end

#csv_output_file_nameObject



31
32
33
# File 'lib/worker_tools/csv_output.rb', line 31

def csv_output_file_name
  "#{model_kind}.csv"
end

#csv_output_insert_headers(csv) ⇒ Object



51
52
53
# File 'lib/worker_tools/csv_output.rb', line 51

def csv_output_insert_headers(csv)
  csv << csv_output_column_headers.values if csv_output_column_headers
end

#csv_output_row_values(entry) ⇒ Object



23
24
25
# File 'lib/worker_tools/csv_output.rb', line 23

def csv_output_row_values(entry)
  entry.values_at(*csv_output_column_headers.keys)
end

#csv_output_tmp_fileObject



27
28
29
# File 'lib/worker_tools/csv_output.rb', line 27

def csv_output_tmp_file
  @csv_output_tmp_file ||= Tempfile.new(['output', '.csv'])
end

#csv_output_write_fileObject



59
60
61
62
63
64
65
66
# File 'lib/worker_tools/csv_output.rb', line 59

def csv_output_write_file
  CSV.open(csv_output_tmp_file, csv_output_write_mode, **csv_output_csv_options) do |csv|
    csv_output_insert_headers(csv)
    csv_output_entries.each { |entry| csv << csv_output_row_values(entry) }
  end

  csv_output_add_attachment
end

#csv_output_write_modeObject



43
44
45
# File 'lib/worker_tools/csv_output.rb', line 43

def csv_output_write_mode
  'wb'
end