csv_importer 0.0.2 → 0.0.3
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/History.txt +3 -0
- data/PostInstall.txt +1 -1
- data/README.rdoc +16 -16
- data/lib/csv_importer/csv_importer.rb +1 -1
- data/spec/csv/sample.csv +14 -14
- data/spec/csv_importer_spec.rb +1 -1
- metadata +47 -13
data/History.txt
CHANGED
data/PostInstall.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
For more information on csv_importer, see http://csv_importer
|
1
|
+
For more information on csv_importer, see http://github.com/sparkboxx/csv_importer
|
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
== DESCRIPTION:
|
2
2
|
|
3
|
-
http://github.com/sparkboxx/
|
3
|
+
http://github.com/sparkboxx/csv_importer
|
4
4
|
|
5
5
|
Ever needed to import csv files where every row needs to be converted into a model?
|
6
6
|
|
@@ -16,29 +16,29 @@ You can provide a dictionary with translations between the CSV column names and
|
|
16
16
|
require 'csv_importer'
|
17
17
|
|
18
18
|
class Product < Struct.new(:title, :price, :brand, :image); end
|
19
|
+
|
19
20
|
file = File.open("filename.csv", "rb")
|
20
|
-
importer =
|
21
|
-
|
21
|
+
importer = CSVImporter::Importer.new(file, Product) # Load file and Model
|
22
|
+
importer.objects # Import and return objects
|
22
23
|
|
23
|
-
|
24
|
+
This will look at the first line of filename.csv, and get the column names. It will then try and initialize a Product for each line using the values of the given columns.
|
25
|
+
It does NOT save the objects yet. For use with ActiveRecord objects you can provide an argument to call save on every product when created
|
24
26
|
|
25
|
-
|
27
|
+
products = importer.object(true)
|
28
|
+
|
29
|
+
The attributes of ActiveRecord objects are assigned using update_attributes for increased security. Beware, that if the model is not an ActiveRecord model mass assigning attributes by CSV column name might impose a security risk if you don't know the exact names of the CSV columns.
|
30
|
+
|
31
|
+
|
32
|
+
You can also use a dictionary to "translate" between the column names in the CSV and the attribute names of your model
|
26
33
|
|
27
34
|
class Product < Struct.new(:title, :price, :brand, :image); end
|
28
35
|
csv_string = "title, the price, the brand \n jeans, 10, fashionable"
|
36
|
+
|
29
37
|
dictionary = {"the brand"=>"brand", "the price"=>"price"}
|
30
|
-
|
38
|
+
|
39
|
+
importer = CSVImporter::Importer.new(csv_string, Product, dictionary)
|
31
40
|
products = importer.objects
|
32
41
|
|
33
|
-
For use with ActiveRecord objects you can provide an argument to call save on every product when created
|
34
|
-
|
35
|
-
products = importer.object(true)
|
36
|
-
|
37
|
-
The attributes of ActiveRecord objects are assigned using update_attributes for increased security.
|
38
|
-
|
39
|
-
Beware, that if the model is not an ActiveRecord model mass assigning attributes by CSV column name might impose a security risk if you don't know the exact names of the CSV columns.
|
40
|
-
|
41
|
-
In a next release a stripped down version of active records "attr_accessible" will be bundled with the gem.
|
42
42
|
|
43
43
|
== REQUIREMENTS:
|
44
44
|
|
@@ -52,7 +52,7 @@ In a next release a stripped down version of active records "attr_accessible" wi
|
|
52
52
|
|
53
53
|
(The MIT License)
|
54
54
|
|
55
|
-
Copyright (c)
|
55
|
+
Copyright (c) 2010 Sparkboxx
|
56
56
|
|
57
57
|
Permission is hereby granted, free of charge, to any person obtaining
|
58
58
|
a copy of this software and associated documentation files (the
|
data/spec/csv/sample.csv
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
Description;Brand;SellPrice;SalePrice;Image;Category;ArticleCode
|
2
|
-
SINGLE JERSEY L.S R;PME Jeans; 59.95; 59.95;http://www.softwear.nl/ism/bouchier/images/JTS91573.JPG;T-shirts;JTS91573
|
3
|
-
MONTANA L.SL. GRAND;PME legend; 59.95; 59.95;http://www.softwear.nl/ism/bouchier/images/PTS88510.JPG;T-shirts;PTS88510
|
4
|
-
CO DOUBLE JERSEY, 1;Cast Iron; 29.95; 29.95;http://www.softwear.nl/ism/bouchier/images/CAC91101.JPG;Belts/ Keyholders;CAC91101
|
5
|
-
PLAYER L.SLV. VEST;Cast Iron; 99.95; 99.95;http://www.softwear.nl/ism/bouchier/images/CKW91406.JPG;Knitwear;CKW91406
|
6
|
-
SLUBOR L.SL POLO;Cast Iron; 79.95; 79.95;http://www.softwear.nl/ism/bouchier/images/CPS91301.JPG;Polo l.sl;CPS91301
|
7
|
-
BEAR CLAW FLOWER -;Cast Iron; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/CSI91601.JPG;Shirts;CSI91601
|
8
|
-
KHENSU LSE - MULTI;Cast Iron; 129.95; 129.95;http://www.softwear.nl/ism/bouchier/images/CTR91202-960.JPG;Pants;CTR91202-960
|
9
|
-
NYLON FLIGHT BOMBER;PME legend; 179.95; 179.95;http://www.softwear.nl/ism/bouchier/images/JA86112.JPG;Jackets;JA86112
|
10
|
-
RATON LONG JACKET;Vanguard; 239.95; 239.95;http://www.softwear.nl/ism/bouchier/images/VJA86149.JPG;Jackets;VJA86149
|
11
|
-
OXFORD PANT, COTTON;Vanguard; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/VTR86422-739.JPG;Pants;VTR86422-739
|
12
|
-
MERIDIAN S.SL R-NEC;Vanguard; 49.95; 49.95;http://www.softwear.nl/ism/bouchier/images/VTSS86301.JPG;T-shirts;VTSS86301
|
13
|
-
;PME legend; 24.95; 24.95;http://www.softwear.nl/ism/bouchier/images/PAC91002.JPG;Belts/ Keyholders;PAC91002
|
14
|
-
COTTON PLAITED V-NE;PME legend; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/PKW91339.JPG;Knitwear;PKW91339
|
1
|
+
Description;Brand;SellPrice;SalePrice;Image;Category;ArticleCode
|
2
|
+
SINGLE JERSEY L.S R;PME Jeans; 59.95; 59.95;http://www.softwear.nl/ism/bouchier/images/JTS91573.JPG;T-shirts;JTS91573
|
3
|
+
MONTANA L.SL. GRAND;PME legend; 59.95; 59.95;http://www.softwear.nl/ism/bouchier/images/PTS88510.JPG;T-shirts;PTS88510
|
4
|
+
CO DOUBLE JERSEY, 1;Cast Iron; 29.95; 29.95;http://www.softwear.nl/ism/bouchier/images/CAC91101.JPG;Belts/ Keyholders;CAC91101
|
5
|
+
PLAYER L.SLV. VEST;Cast Iron; 99.95; 99.95;http://www.softwear.nl/ism/bouchier/images/CKW91406.JPG;Knitwear;CKW91406
|
6
|
+
SLUBOR L.SL POLO;Cast Iron; 79.95; 79.95;http://www.softwear.nl/ism/bouchier/images/CPS91301.JPG;Polo l.sl;CPS91301
|
7
|
+
BEAR CLAW FLOWER -;Cast Iron; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/CSI91601.JPG;Shirts;CSI91601
|
8
|
+
KHENSU LSE - MULTI;Cast Iron; 129.95; 129.95;http://www.softwear.nl/ism/bouchier/images/CTR91202-960.JPG;Pants;CTR91202-960
|
9
|
+
NYLON FLIGHT BOMBER;PME legend; 179.95; 179.95;http://www.softwear.nl/ism/bouchier/images/JA86112.JPG;Jackets;JA86112
|
10
|
+
RATON LONG JACKET;Vanguard; 239.95; 239.95;http://www.softwear.nl/ism/bouchier/images/VJA86149.JPG;Jackets;VJA86149
|
11
|
+
OXFORD PANT, COTTON;Vanguard; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/VTR86422-739.JPG;Pants;VTR86422-739
|
12
|
+
MERIDIAN S.SL R-NEC;Vanguard; 49.95; 49.95;http://www.softwear.nl/ism/bouchier/images/VTSS86301.JPG;T-shirts;VTSS86301
|
13
|
+
;PME legend; 24.95; 24.95;http://www.softwear.nl/ism/bouchier/images/PAC91002.JPG;Belts/ Keyholders;PAC91002
|
14
|
+
COTTON PLAITED V-NE;PME legend; 89.95; 89.95;http://www.softwear.nl/ism/bouchier/images/PKW91339.JPG;Knitwear;PKW91339
|
data/spec/csv_importer_spec.rb
CHANGED
@@ -69,7 +69,7 @@ describe "Initialze CSV" do
|
|
69
69
|
it "should create the collection of objects" do
|
70
70
|
dictionary = {"Description"=>"title", "Saleprice"=>"Price"}
|
71
71
|
importer = Importer.new(File.open(File.dirname(__FILE__)+ "/csv/sample.csv", "rb"), Product, dictionary)
|
72
|
-
importer.objects.count.should ==
|
72
|
+
importer.objects.count.should == 13 #See spec/csv/sample.csv
|
73
73
|
end
|
74
74
|
|
75
75
|
it "shoud not turn the title line into an object" do
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csv_importer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 25
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Sparkboxx
|
@@ -9,21 +15,43 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2010-11-21 00:00:00 +01:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
22
|
+
name: rubyforge
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 7
|
30
|
+
segments:
|
31
|
+
- 2
|
32
|
+
- 0
|
33
|
+
- 4
|
34
|
+
version: 2.0.4
|
17
35
|
type: :development
|
18
|
-
|
19
|
-
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: hoe
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
20
42
|
requirements:
|
21
43
|
- - ">="
|
22
44
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
45
|
+
hash: 21
|
46
|
+
segments:
|
47
|
+
- 2
|
48
|
+
- 6
|
49
|
+
- 1
|
50
|
+
version: 2.6.1
|
51
|
+
type: :development
|
52
|
+
version_requirements: *id002
|
25
53
|
description: |-
|
26
|
-
http://github.com/sparkboxx/
|
54
|
+
http://github.com/sparkboxx/csv_importer
|
27
55
|
|
28
56
|
Ever needed to import csv files where every row needs to be converted into a model?
|
29
57
|
|
@@ -57,7 +85,7 @@ files:
|
|
57
85
|
- spec/spec_helper.rb
|
58
86
|
- tasks/rspec.rake
|
59
87
|
has_rdoc: true
|
60
|
-
homepage: http://github.com/sparkboxx/
|
88
|
+
homepage: http://github.com/sparkboxx/csv_importer
|
61
89
|
licenses: []
|
62
90
|
|
63
91
|
post_install_message:
|
@@ -67,23 +95,29 @@ rdoc_options:
|
|
67
95
|
require_paths:
|
68
96
|
- lib
|
69
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
70
99
|
requirements:
|
71
100
|
- - ">="
|
72
101
|
- !ruby/object:Gem::Version
|
102
|
+
hash: 3
|
103
|
+
segments:
|
104
|
+
- 0
|
73
105
|
version: "0"
|
74
|
-
version:
|
75
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
76
108
|
requirements:
|
77
109
|
- - ">="
|
78
110
|
- !ruby/object:Gem::Version
|
111
|
+
hash: 3
|
112
|
+
segments:
|
113
|
+
- 0
|
79
114
|
version: "0"
|
80
|
-
version:
|
81
115
|
requirements: []
|
82
116
|
|
83
117
|
rubyforge_project: csv_importer
|
84
|
-
rubygems_version: 1.3.
|
118
|
+
rubygems_version: 1.3.7
|
85
119
|
signing_key:
|
86
120
|
specification_version: 3
|
87
|
-
summary: http://github.com/sparkboxx/
|
121
|
+
summary: http://github.com/sparkboxx/csv_importer Ever needed to import csv files where every row needs to be converted into a model? The CSV importer turns every row of a CSV file into an object
|
88
122
|
test_files: []
|
89
123
|
|