active_import 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/active_import.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "active_import/utility"
1
2
  require "active_import/import_csv"
2
3
  require "active_import/import_excel"
3
4
  require 'active_import/model_converter'
@@ -1,6 +1,5 @@
1
1
  module ActiveImport
2
2
  class Seed
3
-
4
3
  def self.seed_from_file seed_file_name
5
4
  seed_file = File.open(seed_file_name, "r")
6
5
  seed_file.each_line do |seed_line|
@@ -10,11 +9,11 @@ module ActiveImport
10
9
  converter_name = seed_info[1]
11
10
 
12
11
  unless data_file_name.nil? || converter_name.nil?
13
- data_file_name = import_file_with_path data_file_name
12
+ data_file_name = ActiveImport.import_file_with_path data_file_name
14
13
 
15
14
  if (File.exists? data_file_name)
16
15
  converter_name.strip!
17
- converter_options = process_converter_options seed_info[2]
16
+ converter_options = ActiveImport.process_converter_options seed_info[2]
18
17
 
19
18
  puts "Importing from: #{data_file_name.cyan}"
20
19
  puts "Using converter: #{converter_name.cyan}"
@@ -38,7 +37,7 @@ module ActiveImport
38
37
  else
39
38
  puts "File type cannot be processed".red
40
39
  end
41
- parse(import, model_converter) unless import.nil?
40
+ ActiveImport.parse(import, model_converter) unless import.nil?
42
41
  else
43
42
  puts "Skipping non existing file: #{data_file_name}".red
44
43
  end
@@ -0,0 +1,39 @@
1
+ module ActiveImport
2
+ def self.import_file_with_path file
3
+ f = file.strip
4
+ unless /^\//.match(f)
5
+ f = File.join(Rails.root, "db", "active_import", f)
6
+ end
7
+ f
8
+ end
9
+
10
+ def self.process_converter_options options_string
11
+ converter_options = {}
12
+ if options_string
13
+ options = options_string.split(";")
14
+ options.each do |option|
15
+ s = option.split("=")
16
+ converter_options[s[0].strip] = s[1].strip
17
+ end
18
+ end
19
+ converter_options
20
+ end
21
+
22
+ def self.parse(import, model_converter)
23
+ model_converter.before
24
+ import.parse do |import_row, converter, row_number, total_rows|
25
+ model_converter.process_values import_row
26
+ model = model_converter.save
27
+ if model.respond_to?("errors")
28
+ print "#{row_number.to_s.cyan}: "
29
+ if model.errors.empty?
30
+ puts "OK".green
31
+ else
32
+ model.errors.full_messages.each { |message| puts message.red }
33
+ end
34
+ end
35
+ end
36
+ model_converter.after
37
+ puts model_converter.report
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module ActiveImport
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,37 +1,17 @@
1
1
  require "active_import"
2
2
  require "colorize"
3
3
 
4
- def import_file_with_path file
5
- f = file.strip
6
- unless /^\//.match(f)
7
- f = File.join(Rails.root, "db", "active_import", f)
8
- end
9
- f
10
- end
11
-
12
- def process_converter_options options_string
13
- converter_options = {}
14
- if options_string
15
- options = options_string.split(";")
16
- options.each do |option|
17
- s = option.split("=")
18
- converter_options[s[0].strip] = s[1].strip
19
- end
20
- end
21
- converter_options
22
- end
23
-
24
4
  def process_import_options
25
5
  converter = ENV["converter"] || ENV["CONVERTER"]
26
6
  converter_model = "#{converter.camelize}Converter"
27
7
  options = ENV["converter_options"] || ENV["CONVERTER_OPTIONS"]
28
- converter_options = process_converter_options options
8
+ converter_options = ActiveImport.process_converter_options options
29
9
 
30
10
  puts "Converter Model: #{converter_model.cyan}"
31
11
  puts "Converter Options: #{converter_options.to_s.cyan}"
32
12
  file = ENV["file"] || ENV["FILE"]
33
13
  file ||= "#{converter.underscore}.csv"
34
- data_file = import_file_with_path file
14
+ data_file = ActiveImport.import_file_with_path file
35
15
 
36
16
  if File.exists?(data_file)
37
17
  puts "Found import file: #{data_file}".green
@@ -44,34 +24,13 @@ def process_import_options
44
24
  return {:data_file => data_file, :model_converter => model_converter}
45
25
  end
46
26
 
47
- def parse(import, model_converter)
48
- model_converter.before
49
- import.parse do |import_row, converter, row_number, total_rows|
50
- model_converter.process_values import_row
51
- model = model_converter.save
52
- if model.respond_to?("errors")
53
- print "#{row_number.to_s.cyan}: "
54
- if model.errors.empty?
55
- puts "OK".green
56
- else
57
- model.errors.full_messages.each { |message| puts message.red }
58
- end
59
- end
60
- end
61
- model_converter.after
62
- puts model_converter.report
63
- end
64
-
65
- def seed_from_file(seed_file_name)
66
- end
67
-
68
27
  namespace :active_import do
69
28
  desc "Load csv file into a model using a model converter"
70
29
  task :csv => :environment do
71
30
  result = process_import_options
72
31
  unless result[:data_file].nil?
73
32
  import = ActiveImport::ImportCsv.new(result[:model_converter], result[:data_file])
74
- parse(import, result[:model_converter])
33
+ ActiveImport.parse(import, result[:model_converter])
75
34
  end
76
35
  end
77
36
  desc "Load excel file into a model using a model converter"
@@ -79,7 +38,7 @@ namespace :active_import do
79
38
  result = process_import_options
80
39
  unless result[:data_file].nil?
81
40
  import = ActiveImport::ImportExcel.new(result[:model_converter], result[:data_file])
82
- parse(import, result[:model_converter])
41
+ ActiveImport.parse(import, result[:model_converter])
83
42
  end
84
43
  end
85
44
  desc "Seed a list of import files"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_import
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-16 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70129661763280 !ruby/object:Gem::Requirement
16
+ requirement: &70111127111460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70129661763280
24
+ version_requirements: *70111127111460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: colorize
27
- requirement: &70129661762220 !ruby/object:Gem::Requirement
27
+ requirement: &70111127109520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70129661762220
35
+ version_requirements: *70111127109520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: roo
38
- requirement: &70129661759880 !ruby/object:Gem::Requirement
38
+ requirement: &70111127107260 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70129661759880
46
+ version_requirements: *70111127107260
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sqlite3
49
- requirement: &70129661758520 !ruby/object:Gem::Requirement
49
+ requirement: &70111127102900 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70129661758520
57
+ version_requirements: *70111127102900
58
58
  description: ''
59
59
  email:
60
60
  - david.monagle@intrica.com.au
@@ -66,6 +66,7 @@ files:
66
66
  - lib/active_import/import_excel.rb
67
67
  - lib/active_import/model_converter.rb
68
68
  - lib/active_import/seed.rb
69
+ - lib/active_import/utility.rb
69
70
  - lib/active_import/version.rb
70
71
  - lib/active_import.rb
71
72
  - lib/generators/active_import/model_converter_generator.rb
@@ -120,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
121
  version: '0'
121
122
  segments:
122
123
  - 0
123
- hash: 3899470936762174354
124
+ hash: 3636221692883456785
124
125
  required_rubygems_version: !ruby/object:Gem::Requirement
125
126
  none: false
126
127
  requirements:
@@ -129,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
130
  version: '0'
130
131
  segments:
131
132
  - 0
132
- hash: 3899470936762174354
133
+ hash: 3636221692883456785
133
134
  requirements: []
134
135
  rubyforge_project:
135
136
  rubygems_version: 1.8.6