postgres_upsert 3.0.0 → 4.0.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/spec/spec_helper.rb CHANGED
@@ -1,47 +1,15 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ require File.expand_path("../../config/environment", __FILE__)
2
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
4
  require 'fixtures/test_model'
4
5
  require 'fixtures/three_column'
5
6
  require 'fixtures/reserved_word_model'
6
7
  require 'rspec'
8
+ require 'rspec/rails'
7
9
  require 'rspec/autorun'
8
10
 
9
11
  RSpec.configure do |config|
10
- config.before(:suite) do
11
- # we create a test database if it does not exist
12
- # I do not use database users or password for the tests, using ident authentication instead
13
- begin
14
- ActiveRecord::Base.establish_connection(
15
- :adapter => "postgresql",
16
- :host => "localhost",
17
- :username => "postgres",
18
- :password => "postgres",
19
- :port => 5432,
20
- :database => "ar_pg_copy_test"
21
- )
22
- ActiveRecord::Base.connection.execute %{
23
- SET client_min_messages TO warning;
24
- DROP TABLE IF EXISTS test_models;
25
- DROP TABLE IF EXISTS three_columns;
26
- DROP TABLE IF EXISTS reserved_word_models;
27
- CREATE TABLE test_models (id serial PRIMARY KEY, data text, created_at timestamp with time zone, updated_at timestamp with time zone );
28
- CREATE TABLE three_columns (id serial PRIMARY KEY, data text, extra text, created_at timestamp with time zone, updated_at timestamp with time zone );
29
- CREATE TABLE reserved_word_models (id serial PRIMARY KEY, "select" text, "group" text);
30
- }
31
- rescue Exception => e
32
- puts "Exception: #{e}"
33
- ActiveRecord::Base.establish_connection(
34
- :adapter => "postgresql",
35
- :host => "localhost",
36
- :username => "postgres",
37
- :password => "postgres",
38
- :port => 5432,
39
- :database => "postgres"
40
- )
41
- ActiveRecord::Base.connection.execute "DROP DATABASE IF EXISTS ar_pg_copy_test"
42
- ActiveRecord::Base.connection.execute "CREATE DATABASE ar_pg_copy_test;"
43
- retry
44
- end
45
- end
46
-
12
+ #config.use_transactional_fixtures = false
13
+ config.expose_current_running_example_as :example
14
+ config.infer_spec_type_from_file_location!
47
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postgres_upsert
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Mitchell
@@ -28,86 +28,86 @@ dependencies:
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: 3.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: 3.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: 3.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rdoc
70
+ name: pry-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: pry-rails
84
+ name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '2.12'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '2.12'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rspec
98
+ name: rspec-rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ~>
102
102
  - !ruby/object:Gem::Version
103
- version: '2.12'
103
+ version: '2.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ~>
109
109
  - !ruby/object:Gem::Version
110
- version: '2.12'
110
+ version: '2.0'
111
111
  description: Uses Postgres's powerful COPY command to upsert large sets of data into
112
112
  ActiveRecord tables
113
113
  email: thestevemitchell@gmail.com
@@ -116,17 +116,36 @@ extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
118
  - .gitignore
119
+ - .travis.yml
119
120
  - Gemfile
120
121
  - Gemfile.lock
121
122
  - LICENSE
122
123
  - README.md
123
124
  - Rakefile
124
125
  - VERSION
126
+ - bin/bundle
127
+ - bin/rails
128
+ - bin/rake
129
+ - bin/setup
130
+ - config.ru
131
+ - config/application.rb
132
+ - config/boot.rb
133
+ - config/database.yml
134
+ - config/environment.rb
135
+ - config/environments/development.rb
136
+ - config/environments/production.rb
137
+ - config/environments/test.rb
138
+ - config/locales/en.yml
139
+ - config/routes.rb
140
+ - config/secrets.yml
141
+ - db/migrate/20150214192135_create_test_tables.rb
142
+ - db/schema.rb
143
+ - db/seeds.rb
125
144
  - lib/postgres_upsert.rb
126
- - lib/postgres_upsert/active_record.rb
145
+ - lib/postgres_upsert/result.rb
146
+ - lib/postgres_upsert/table_writer.rb
127
147
  - lib/postgres_upsert/writer.rb
128
148
  - postgres_upsert.gemspec
129
- - spec/fixtures/2_col_binary_data.dat
130
149
  - spec/fixtures/comma_with_header.csv
131
150
  - spec/fixtures/comma_with_header_and_comma_values.csv
132
151
  - spec/fixtures/comma_with_header_and_unquoted_comma.csv
@@ -144,9 +163,7 @@ files:
144
163
  - spec/fixtures/tab_with_two_lines.csv
145
164
  - spec/fixtures/test_model.rb
146
165
  - spec/fixtures/three_column.rb
147
- - spec/pg_upsert_binary_spec.rb
148
166
  - spec/pg_upsert_csv_spec.rb
149
- - spec/spec.opts
150
167
  - spec/spec_helper.rb
151
168
  homepage: https://github.com/theSteveMitchell/postgres_upsert
152
169
  licenses: []
@@ -157,23 +174,22 @@ require_paths:
157
174
  - lib
158
175
  required_ruby_version: !ruby/object:Gem::Requirement
159
176
  requirements:
160
- - - '>='
177
+ - - ! '>='
161
178
  - !ruby/object:Gem::Version
162
179
  version: 1.8.7
163
180
  required_rubygems_version: !ruby/object:Gem::Requirement
164
181
  requirements:
165
- - - '>='
182
+ - - ! '>='
166
183
  - !ruby/object:Gem::Version
167
184
  version: '0'
168
185
  requirements: []
169
186
  rubyforge_project:
170
- rubygems_version: 2.0.6
187
+ rubygems_version: 2.4.5
171
188
  signing_key:
172
189
  specification_version: 4
173
190
  summary: A rubygem that integrates with ActiveRecord to insert/update large data sets
174
191
  into the database efficiently
175
192
  test_files:
176
- - spec/fixtures/2_col_binary_data.dat
177
193
  - spec/fixtures/comma_with_header.csv
178
194
  - spec/fixtures/comma_with_header_and_comma_values.csv
179
195
  - spec/fixtures/comma_with_header_and_unquoted_comma.csv
@@ -191,7 +207,5 @@ test_files:
191
207
  - spec/fixtures/tab_with_two_lines.csv
192
208
  - spec/fixtures/test_model.rb
193
209
  - spec/fixtures/three_column.rb
194
- - spec/pg_upsert_binary_spec.rb
195
210
  - spec/pg_upsert_csv_spec.rb
196
- - spec/spec.opts
197
211
  - spec/spec_helper.rb
@@ -1,13 +0,0 @@
1
- module ActiveRecord
2
- class Base
3
- # Copy data to a file passed as a string (the file path) or to lines that are passed to a block
4
-
5
- # Copy data from a CSV that can be passed as a string (the file path) or as an IO object.
6
- # * You can change the default delimiter passing delimiter: '' in the options hash
7
- # * You can map fields from the file to different fields in the table using a map in the options hash
8
- # * For further details on usage take a look at the README.md
9
- def self.pg_upsert path_or_io, options = {}
10
- PostgresUpsert::Writer.new(table_name, path_or_io, options).write
11
- end
12
- end
13
- end
Binary file
@@ -1,35 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "pg_upsert from file with binary data" do
4
- before(:each) do
5
- ActiveRecord::Base.connection.execute %{
6
- TRUNCATE TABLE test_models;
7
- SELECT setval('test_models_id_seq', 1, false);
8
- }
9
- end
10
-
11
- before do
12
- DateTime.stub(:now).and_return (DateTime.parse("2012-01-01").utc)
13
- end
14
-
15
- def timestamp
16
- DateTime.now.utc.to_s
17
- end
18
-
19
- it "imports from file if path is passed without field_map" do
20
- TestModel.pg_upsert File.expand_path('spec/fixtures/2_col_binary_data.dat'), :format => :binary, columns: [:id, :data]
21
-
22
- expect(
23
- TestModel.first.attributes
24
- ).to include('data' => 'text', 'created_at' => timestamp, 'updated_at' => timestamp)
25
- end
26
-
27
- it "throws an error when importing binary file without columns list" do
28
- # Since binary data never has a header row, we'll require explicit columns list
29
- expect{
30
- TestModel.pg_upsert File.expand_path('spec/fixtures/2_col_binary_data.dat'), :format => :binary
31
- }.to raise_error "Either the :columns option or :header => true are required"
32
- end
33
-
34
- end
35
-
data/spec/spec.opts DELETED
@@ -1 +0,0 @@
1
- --color