postgres-copy 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 06fb58609cde69655a230014265b1617d26e6b4a
4
- data.tar.gz: 925c7d2f5b4d0ac68c8ff579dbaacfd0ece9823d
3
+ metadata.gz: 437fe4302d72a8f1d898659f2f82388dd1e00cfb
4
+ data.tar.gz: 4745570fccd99bd783ae52dc747a98a9fcc88708
5
5
  SHA512:
6
- metadata.gz: 1363641eb2b61078691ad937a0f7dbbc682f8105ea8f7684646e66401ad344658965b1bca5741caecee264b26109e1a7796fce0cb50cdac40880810ca9afb2a8
7
- data.tar.gz: 356c74bb431c9b6713054b41a6d51b1d4033477729e96c90f1a4b2d876019d586727140bc92d22752cd02553d48c35821d4d0cf3d6ea1dd215a8312bc668f0e1
6
+ metadata.gz: 67aed7638aa7b9b4620293deb64a6a98f1bd04c7fd85174c3be42f461ffb4434925998bfe11cbc9d1c6044e8729625def56cddb3dbbc67b164f76f758a9125d5
7
+ data.tar.gz: 1799fe5ba93f17df53403e94533657294a1e85b3344c72cf1fb48f834610c197c5b14bf139c70d33b4eb0dde1399448b58bca6835b4a7bbc719f135de4c67e3c
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ rdoc
19
19
  pkg
20
20
 
21
21
  ## PROJECT::SPECIFIC
22
+ .project
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- postgres-copy (0.9.0)
4
+ postgres-copy (0.9.1)
5
5
  activerecord (>= 4.0)
6
6
  pg (>= 0.17)
7
7
  rails (>= 4.0)
@@ -10,70 +10,93 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actionmailer (4.1.1)
14
- actionpack (= 4.1.1)
15
- actionview (= 4.1.1)
16
- mail (~> 2.5.4)
17
- actionpack (4.1.1)
18
- actionview (= 4.1.1)
19
- activesupport (= 4.1.1)
20
- rack (~> 1.5.2)
13
+ actionmailer (4.2.1)
14
+ actionpack (= 4.2.1)
15
+ actionview (= 4.2.1)
16
+ activejob (= 4.2.1)
17
+ mail (~> 2.5, >= 2.5.4)
18
+ rails-dom-testing (~> 1.0, >= 1.0.5)
19
+ actionpack (4.2.1)
20
+ actionview (= 4.2.1)
21
+ activesupport (= 4.2.1)
22
+ rack (~> 1.6)
21
23
  rack-test (~> 0.6.2)
22
- actionview (4.1.1)
23
- activesupport (= 4.1.1)
24
+ rails-dom-testing (~> 1.0, >= 1.0.5)
25
+ rails-html-sanitizer (~> 1.0, >= 1.0.1)
26
+ actionview (4.2.1)
27
+ activesupport (= 4.2.1)
24
28
  builder (~> 3.1)
25
29
  erubis (~> 2.7.0)
26
- activemodel (4.1.1)
27
- activesupport (= 4.1.1)
30
+ rails-dom-testing (~> 1.0, >= 1.0.5)
31
+ rails-html-sanitizer (~> 1.0, >= 1.0.1)
32
+ activejob (4.2.1)
33
+ activesupport (= 4.2.1)
34
+ globalid (>= 0.3.0)
35
+ activemodel (4.2.1)
36
+ activesupport (= 4.2.1)
28
37
  builder (~> 3.1)
29
- activerecord (4.1.1)
30
- activemodel (= 4.1.1)
31
- activesupport (= 4.1.1)
32
- arel (~> 5.0.0)
33
- activesupport (4.1.1)
34
- i18n (~> 0.6, >= 0.6.9)
38
+ activerecord (4.2.1)
39
+ activemodel (= 4.2.1)
40
+ activesupport (= 4.2.1)
41
+ arel (~> 6.0)
42
+ activesupport (4.2.1)
43
+ i18n (~> 0.7)
35
44
  json (~> 1.7, >= 1.7.7)
36
45
  minitest (~> 5.1)
37
- thread_safe (~> 0.1)
46
+ thread_safe (~> 0.3, >= 0.3.4)
38
47
  tzinfo (~> 1.1)
39
- arel (5.0.1.20140414130214)
48
+ arel (6.0.0)
40
49
  builder (3.2.2)
41
50
  diff-lcs (1.2.5)
42
51
  erubis (2.7.0)
52
+ globalid (0.3.3)
53
+ activesupport (>= 4.1.0)
43
54
  hike (1.2.3)
44
- i18n (0.6.9)
55
+ i18n (0.7.0)
45
56
  json (1.8.1)
46
- mail (2.5.4)
47
- mime-types (~> 1.16)
48
- treetop (~> 1.4.8)
49
- mime-types (1.25.1)
50
- minitest (5.3.5)
51
- multi_json (1.10.1)
52
- pg (0.17.1)
53
- polyglot (0.3.5)
54
- rack (1.5.2)
55
- rack-test (0.6.2)
57
+ loofah (2.0.1)
58
+ nokogiri (>= 1.5.9)
59
+ mail (2.6.3)
60
+ mime-types (>= 1.16, < 3)
61
+ mime-types (2.4.3)
62
+ mini_portile (0.6.2)
63
+ minitest (5.5.1)
64
+ multi_json (1.11.0)
65
+ nokogiri (1.6.6.2)
66
+ mini_portile (~> 0.6.0)
67
+ pg (0.18.1)
68
+ rack (1.6.0)
69
+ rack-test (0.6.3)
56
70
  rack (>= 1.0)
57
- rails (4.1.1)
58
- actionmailer (= 4.1.1)
59
- actionpack (= 4.1.1)
60
- actionview (= 4.1.1)
61
- activemodel (= 4.1.1)
62
- activerecord (= 4.1.1)
63
- activesupport (= 4.1.1)
71
+ rails (4.2.1)
72
+ actionmailer (= 4.2.1)
73
+ actionpack (= 4.2.1)
74
+ actionview (= 4.2.1)
75
+ activejob (= 4.2.1)
76
+ activemodel (= 4.2.1)
77
+ activerecord (= 4.2.1)
78
+ activesupport (= 4.2.1)
64
79
  bundler (>= 1.3.0, < 2.0)
65
- railties (= 4.1.1)
66
- sprockets-rails (~> 2.0)
67
- railties (4.1.1)
68
- actionpack (= 4.1.1)
69
- activesupport (= 4.1.1)
80
+ railties (= 4.2.1)
81
+ sprockets-rails
82
+ rails-deprecated_sanitizer (1.0.3)
83
+ activesupport (>= 4.2.0.alpha)
84
+ rails-dom-testing (1.0.6)
85
+ activesupport (>= 4.2.0.beta, < 5.0)
86
+ nokogiri (~> 1.6.0)
87
+ rails-deprecated_sanitizer (>= 1.0.1)
88
+ rails-html-sanitizer (1.0.2)
89
+ loofah (~> 2.0)
90
+ railties (4.2.1)
91
+ actionpack (= 4.2.1)
92
+ activesupport (= 4.2.1)
70
93
  rake (>= 0.8.7)
71
94
  thor (>= 0.18.1, < 2.0)
72
- rake (10.3.2)
95
+ rake (10.4.2)
73
96
  rdoc (4.1.1)
74
97
  json (~> 1.4)
75
- responders (1.1.0)
76
- railties (>= 3.2, < 5)
98
+ responders (2.1.0)
99
+ railties (>= 4.2.0, < 5)
77
100
  rspec (2.99.0)
78
101
  rspec-core (~> 2.99.0)
79
102
  rspec-expectations (~> 2.99.0)
@@ -82,22 +105,19 @@ GEM
82
105
  rspec-expectations (2.99.0)
83
106
  diff-lcs (>= 1.1.3, < 2.0)
84
107
  rspec-mocks (2.99.1)
85
- sprockets (2.12.1)
108
+ sprockets (2.12.3)
86
109
  hike (~> 1.2)
87
110
  multi_json (~> 1.0)
88
111
  rack (~> 1.0)
89
112
  tilt (~> 1.1, != 1.3.0)
90
- sprockets-rails (2.1.3)
113
+ sprockets-rails (2.2.4)
91
114
  actionpack (>= 3.0)
92
115
  activesupport (>= 3.0)
93
- sprockets (~> 2.8)
116
+ sprockets (>= 2.8, < 4.0)
94
117
  thor (0.19.1)
95
- thread_safe (0.3.4)
118
+ thread_safe (0.3.5)
96
119
  tilt (1.4.1)
97
- treetop (1.4.15)
98
- polyglot
99
- polyglot (>= 0.3.1)
100
- tzinfo (1.2.1)
120
+ tzinfo (1.2.2)
101
121
  thread_safe (~> 0.1)
102
122
 
103
123
  PLATFORMS
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # postgres-copy [![Build Status](https://travis-ci.org/diogob/postgres-copy.png?branch=master)](https://travis-ci.org/diogob/postgres-copy)
1
+ # postgres-copy [![Build Status](https://travis-ci.org/diogob/postgres-copy.png?branch=master)](https://travis-ci.org/diogob/postgres-copy) [![Code Climate](https://codeclimate.com/github/diogob/postgres-copy.png)](https://codeclimate.com/github/diogob/postgres-copy)
2
2
 
3
3
  This Gem will enable your AR models to use the PostgreSQL COPY command to import/export data in CSV format.
4
4
  If you need to tranfer data between a PostgreSQL database and CSV files, the PostgreSQL native CSV parser
@@ -82,7 +82,7 @@ module PostgresCopy
82
82
  while line = io.gets do
83
83
  next if line.strip.size == 0
84
84
  if block_given?
85
- row = line.strip.split(options[:delimiter])
85
+ row = line.strip.split(options[:delimiter],-1)
86
86
  yield(row)
87
87
  line = row.join(options[:delimiter]) + "\n"
88
88
  end
@@ -5,7 +5,7 @@ $:.unshift lib unless $:.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "postgres-copy"
8
- s.version = "0.9.0"
8
+ s.version = "0.9.1"
9
9
 
10
10
  s.platform = Gem::Platform::RUBY
11
11
  s.required_ruby_version = ">= 1.9.3"
@@ -4,6 +4,7 @@ describe "COPY FROM" do
4
4
  before(:each) do
5
5
  ActiveRecord::Base.connection.execute %{
6
6
  TRUNCATE TABLE test_models;
7
+ TRUNCATE TABLE test_extended_models;
7
8
  SELECT setval('test_models_id_seq', 1, false);
8
9
  }
9
10
  end
@@ -90,5 +91,25 @@ describe "COPY FROM" do
90
91
  ReservedWordModel.copy_from File.expand_path('spec/fixtures/reserved_words.csv'), :delimiter => "\t"
91
92
  ReservedWordModel.order(:id).map{|r| r.attributes}.should == [{"group"=>"group name", "id"=>1, "select"=>"test select"}]
92
93
  end
94
+
95
+ it "should import even last columns have empty values" do
96
+ TestExtendedModel.copy_from File.expand_path('spec/fixtures/comma_with_header_empty_values_at_the_end.csv')
97
+ TestExtendedModel.order(:id).map{|r| r.attributes}.should ==
98
+ [{"id"=>1, "data"=>"test data 1", "more_data"=>nil, "other_data"=>nil, "final_data"=>nil},
99
+ {"id"=>2, "data"=>"test data 2", "more_data"=>"9", "other_data"=>nil, "final_data"=>nil},
100
+ {"id"=>3, "data"=>"test data 2", "more_data"=>"9", "other_data"=>nil, "final_data"=>"0"}]
101
+ end
102
+
103
+ it "should import even last columns have empty values with block" do
104
+ TestExtendedModel.copy_from File.expand_path('spec/fixtures/comma_with_header_empty_values_at_the_end.csv') do |row|
105
+ row[4]="666"
106
+ end
107
+ TestExtendedModel.order(:id).map{|r| r.attributes}.should ==
108
+ [{"id"=>1, "data"=>"test data 1", "more_data"=>nil, "other_data"=>nil, "final_data"=>"666"},
109
+ {"id"=>2, "data"=>"test data 2", "more_data"=>"9", "other_data"=>nil, "final_data"=>"666"},
110
+ {"id"=>3, "data"=>"test data 2", "more_data"=>"9", "other_data"=>nil, "final_data"=>"666"}]
111
+ end
112
+
113
+
93
114
  end
94
115
 
@@ -0,0 +1,4 @@
1
+ id,data,more_data,other_data,final_data
2
+ 1,test data 1,,,
3
+ 2,test data 2,9,,
4
+ 3,test data 2,9,,0
@@ -0,0 +1,5 @@
1
+ require 'postgres-copy'
2
+
3
+ class TestExtendedModel < ActiveRecord::Base
4
+ acts_as_copy_target
5
+ end
@@ -2,6 +2,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  require 'active_record'
4
4
  require 'fixtures/test_model'
5
+ require 'fixtures/test_extended_model'
5
6
  require 'fixtures/extra_field'
6
7
  require 'fixtures/reserved_word_model'
7
8
  require 'rspec'
@@ -26,6 +27,7 @@ RSpec.configure do |config|
26
27
  DROP TABLE IF EXISTS extra_fields;
27
28
  DROP TABLE IF EXISTS reserved_word_models;
28
29
  CREATE TABLE test_models (id serial PRIMARY KEY, data text);
30
+ CREATE TABLE test_extended_models (id serial PRIMARY KEY, data text, more_data text,other_data text,final_data text );
29
31
  CREATE TABLE reserved_word_models (id serial PRIMARY KEY, "select" text, "group" text);
30
32
  CREATE TABLE extra_fields (id serial PRIMARY KEY, data text, created_at timestamp, updated_at timestamp);
31
33
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postgres-copy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diogo Biazus
@@ -135,6 +135,7 @@ files:
135
135
  - spec/copy_to_spec.rb
136
136
  - spec/fixtures/2_col_binary_data.dat
137
137
  - spec/fixtures/comma_with_header.csv
138
+ - spec/fixtures/comma_with_header_empty_values_at_the_end.csv
138
139
  - spec/fixtures/comma_without_header.csv
139
140
  - spec/fixtures/extra_field.rb
140
141
  - spec/fixtures/reserved_word_model.rb
@@ -147,6 +148,7 @@ files:
147
148
  - spec/fixtures/tab_with_extra_line.csv
148
149
  - spec/fixtures/tab_with_header.csv
149
150
  - spec/fixtures/tab_with_two_lines.csv
151
+ - spec/fixtures/test_extended_model.rb
150
152
  - spec/fixtures/test_model.rb
151
153
  - spec/spec.opts
152
154
  - spec/spec_helper.rb
@@ -169,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
171
  version: '0'
170
172
  requirements: []
171
173
  rubyforge_project:
172
- rubygems_version: 2.2.2
174
+ rubygems_version: 2.4.5
173
175
  signing_key:
174
176
  specification_version: 4
175
177
  summary: Put COPY command functionality in ActiveRecord's model class
@@ -180,6 +182,7 @@ test_files:
180
182
  - spec/copy_to_spec.rb
181
183
  - spec/fixtures/2_col_binary_data.dat
182
184
  - spec/fixtures/comma_with_header.csv
185
+ - spec/fixtures/comma_with_header_empty_values_at_the_end.csv
183
186
  - spec/fixtures/comma_without_header.csv
184
187
  - spec/fixtures/extra_field.rb
185
188
  - spec/fixtures/reserved_word_model.rb
@@ -192,6 +195,7 @@ test_files:
192
195
  - spec/fixtures/tab_with_extra_line.csv
193
196
  - spec/fixtures/tab_with_header.csv
194
197
  - spec/fixtures/tab_with_two_lines.csv
198
+ - spec/fixtures/test_extended_model.rb
195
199
  - spec/fixtures/test_model.rb
196
200
  - spec/spec.opts
197
201
  - spec/spec_helper.rb