Class: ActiveImport::Seed

Inherits:
Object
  • Object
show all
Defined in:
lib/active_import/seed.rb

Class Method Summary collapse

Class Method Details

.seed_from_file(seed_file_name) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/active_import/seed.rb', line 3

def self.seed_from_file seed_file_name
  seed_file = File.open(seed_file_name, "r")
  seed_file.each_line do |seed_line|
    unless (/^#/.match(seed_line))
      seed_info = seed_line.split("|")
      data_file_name = seed_info[0]
      converter_name = seed_info[1]

      unless data_file_name.nil? || converter_name.nil?
        data_file_name = ActiveImport.import_file_with_path data_file_name

        if (File.exists? data_file_name)
          converter_name.strip!
          converter_options = ActiveImport.process_converter_options seed_info[2]

          puts "Importing from: #{data_file_name.cyan}"
          puts "Using converter: #{converter_name.cyan}"
          puts "Options: #{converter_options.to_s.cyan}"

          model_converter = eval("#{converter_name.camelize}Converter.new")
          model_converter.options = converter_options

          import = nil
          extension = File.extname(data_file_name).downcase.strip
          case extension
            when ".xls"
              puts "Excel file detected".yellow
              import = ActiveImport::ImportExcel.new(model_converter, data_file_name)
            when ".xlsx"
              puts "Excel(X) file detected".yellow
              import = ActiveImport::ImportExcel.new(model_converter, data_file_name)
            when ".csv"
              puts "CSV file detected".yellow
              import = ActiveImport::ImportCsv.new(model_converter, data_file_name)
            else
              puts "File type cannot be processed".red
          end
          ActiveImport.parse(import, model_converter) unless import.nil?
        else
          puts "Skipping non existing file: #{data_file_name}".red
        end
      end
    end
  end
end