def read_attributes_from_file aliases = {}
      attributes = FasterCSV.new(@csv_data, @parser_options).readline
      @start_at_row = [ @start_at_row, 1 ].max
      @csv_data.rewind
      attributes.each_with_index do |name, index|
        name.strip!
        use_name = aliases[name] || name.gsub(/\s+/, '_').gsub(/[\W]+/, '').downcase
        add_attribute use_name, index
      end
    end
def read_attributes_from_file aliases = {}
      attributes = FasterCSV.new(@csv_data, @parser_options).readline
      @start_at_row = [ @start_at_row, 1 ].max
      @csv_data.rewind
      attributes.each_with_index do |name, index|
        name.strip!
        use_name = aliases[name] || name.gsub(/\s+/, '_').gsub(/[\W]+/, '').downcase
        add_attribute use_name, index
      end
    end
Allow us to read the first line of a csv file to automatically generate the attribute names.
 Spaces are replaced with underscores and non-word characters are removed.

 Keep in mind that there is potential for overlap in using this (i.e. you have a field named
 files+ and one named files- and they both get named 'files').

 You can specify aliases to rename fields to prevent conflicts and/or improve readability and compatibility.

 i.e. read_attributes_from_file('files+' => 'files_plus', 'files-' => 'files_minus)