active_import 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/active_import.rb +1 -0
- data/lib/active_import/seed.rb +3 -4
- data/lib/active_import/utility.rb +39 -0
- data/lib/active_import/version.rb +1 -1
- data/lib/tasks/active_import_tasks.rake +4 -45
- metadata +12 -11
data/lib/active_import.rb
CHANGED
data/lib/active_import/seed.rb
CHANGED
@@ -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,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
|
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: &
|
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: *
|
24
|
+
version_requirements: *70111127111460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: colorize
|
27
|
-
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: *
|
35
|
+
version_requirements: *70111127109520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: roo
|
38
|
-
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: *
|
46
|
+
version_requirements: *70111127107260
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sqlite3
|
49
|
-
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: *
|
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:
|
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:
|
133
|
+
hash: 3636221692883456785
|
133
134
|
requirements: []
|
134
135
|
rubyforge_project:
|
135
136
|
rubygems_version: 1.8.6
|