activerecord-import 0.2.10 → 0.2.11

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -36,7 +36,7 @@ namespace :display do
36
36
  end
37
37
  task :default => ["display:notice"]
38
38
 
39
- ADAPTERS = %w(mysql mysql2 jdbcmysql postgresql sqlite3)
39
+ ADAPTERS = %w(mysql mysql2 jdbcmysql postgresql sqlite3 seamless_database_pool)
40
40
  ADAPTERS.each do |adapter|
41
41
  namespace :test do
42
42
  desc "Runs #{adapter} database tests."
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.10
1
+ 0.2.11
@@ -2,5 +2,5 @@ require "active_record/connection_adapters/mysql_adapter"
2
2
  require "activerecord-import/adapters/mysql_adapter"
3
3
 
4
4
  class ActiveRecord::ConnectionAdapters::MysqlAdapter
5
- include ActiveRecord::Import::MysqlAdapter::InstanceMethods
5
+ include ActiveRecord::Import::MysqlAdapter
6
6
  end
@@ -0,0 +1,7 @@
1
+ require "seamless_database_pool"
2
+ require "active_record/connection_adapters/seamless_database_pool_adapter"
3
+ require "activerecord-import/adapters/mysql_adapter"
4
+
5
+ class ActiveRecord::ConnectionAdapters::SeamlessDatabasePoolAdapter
6
+ include ActiveRecord::Import::MysqlAdapter
7
+ end
@@ -17,6 +17,12 @@ module ActiveRecord::Import #:nodoc:
17
17
  true
18
18
  end
19
19
  end
20
+
21
+ class MissingColumnError < StandardError
22
+ def initialize(name, index)
23
+ super "Missing column for value <#{name}> at index #{index}"
24
+ end
25
+ end
20
26
  end
21
27
 
22
28
  class ActiveRecord::Base
@@ -254,8 +260,12 @@ class ActiveRecord::Base
254
260
  end
255
261
  end
256
262
  array_of_attributes.compact!
257
-
258
- num_inserts = array_of_attributes.empty? ? 0 : import_without_validations_or_callbacks( column_names, array_of_attributes, options )
263
+
264
+ num_inserts = if array_of_attributes.empty? || options[:all_or_none] && failed_instances.any?
265
+ 0
266
+ else
267
+ import_without_validations_or_callbacks( column_names, array_of_attributes, options )
268
+ end
259
269
  ActiveRecord::Import::Result.new(failed_instances, num_inserts)
260
270
  end
261
271
 
@@ -266,7 +276,13 @@ class ActiveRecord::Base
266
276
  # information on +column_names+, +array_of_attributes_ and
267
277
  # +options+.
268
278
  def import_without_validations_or_callbacks( column_names, array_of_attributes, options={} )
269
- columns = column_names.map { |name| columns_hash[name.to_s] }
279
+ columns = column_names.each_with_index.map do |name, i|
280
+ column = columns_hash[name.to_s]
281
+
282
+ raise ActiveRecord::Import::MissingColumnError.new(name.to_s, i) if column.nil?
283
+
284
+ column
285
+ end
270
286
 
271
287
  columns_sql = "(#{column_names.map{|name| connection.quote_column_name(name) }.join(',')})"
272
288
  insert_sql = "INSERT #{options[:ignore] ? 'IGNORE ':''}INTO #{quoted_table_name} #{columns_sql} VALUES "
@@ -297,6 +313,7 @@ class ActiveRecord::Base
297
313
  array_of_attributes.map do |arr|
298
314
  my_values = arr.each_with_index.map do |val,j|
299
315
  column = columns[j]
316
+
300
317
  if val.nil? && !sequence_name.blank? && column.name == primary_key
301
318
  connection.next_value_for_sequence(sequence_name)
302
319
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-import
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.10
4
+ version: 0.2.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-06 00:00:00.000000000 Z
12
+ date: 2012-09-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -92,6 +92,7 @@ files:
92
92
  - lib/activerecord-import/active_record/adapters/mysql2_adapter.rb
93
93
  - lib/activerecord-import/active_record/adapters/mysql_adapter.rb
94
94
  - lib/activerecord-import/active_record/adapters/postgresql_adapter.rb
95
+ - lib/activerecord-import/active_record/adapters/seamless_database_pool_adapter.rb
95
96
  - lib/activerecord-import/active_record/adapters/sqlite3_adapter.rb
96
97
  - lib/activerecord-import/adapters/abstract_adapter.rb
97
98
  - lib/activerecord-import/adapters/mysql_adapter.rb
@@ -118,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
118
119
  version: '0'
119
120
  segments:
120
121
  - 0
121
- hash: -4211512731730455509
122
+ hash: 4132545664813996444
122
123
  required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  none: false
124
125
  requirements: