activerecord-import 0.6.0 → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d56f03f91020cf45a7991e8dcfcc3501865bc76
4
- data.tar.gz: ad90843270868863373e130fe3031eca04212c9f
3
+ metadata.gz: 7aec7bd524a95df0244ff6fd857ca4b534fffe7e
4
+ data.tar.gz: 3680f99953ff777985422c2a349eacd88b7df0d5
5
5
  SHA512:
6
- metadata.gz: 39d17dc94eec248309b4acf6b0a6d0b83aaa350eea90b1177176d0c4b032b5f3be49d23c3c03db6dba706c2d30e28f3bc543e5a44d132431ea8a74f12d14fe5c
7
- data.tar.gz: 1370ba68b46d19f12d032a8f4eacefaddb9dbd7850ce1661504ffa7c95baabba32c1f0d363a281f2c1dfeba07d932076035403e37241e2acd86f3dbffd666226
6
+ metadata.gz: 302282ad1f0db1ce53f9961a46de68dea66b6f332e25742b35cf086ce16a458c40c502aa8c3b3a93a220b3fc4307c5ee33e731d786c2365f82a294dac214c17b
7
+ data.tar.gz: edbc30d0d1e4ecdeeabacfed9042b02ae89c79ea644d8683dd6a9048847ee1f40f6bea357fe702628bbe8f694a20e2d76db20d1ea7102b2dfe31e3068e7930bc
data/Gemfile CHANGED
@@ -20,7 +20,9 @@ end
20
20
 
21
21
  # Support libs
22
22
  gem "factory_girl", "~> 4.2.0"
23
- gem "delorean", "~> 0.2.0"
23
+ gem "timecop"
24
+ gem "chronic"
25
+
24
26
 
25
27
  # Debugging
26
28
  platforms :jruby do
@@ -37,4 +39,8 @@ end
37
39
 
38
40
  version = ENV['AR_VERSION'] || "3.2"
39
41
 
42
+ if version > "4.0"
43
+ gem "minitest"
44
+ end
45
+
40
46
  eval_gemfile File.expand_path("../gemfiles/#{version}.gemfile", __FILE__)
@@ -0,0 +1,4 @@
1
+ platforms :ruby do
2
+ gem 'mysql', '~> 2.9'
3
+ gem 'activerecord', '~> 4.1'
4
+ end
@@ -0,0 +1,4 @@
1
+ platforms :ruby do
2
+ gem 'mysql', '~> 2.9'
3
+ gem 'activerecord', '~> 4.2'
4
+ end
@@ -25,6 +25,71 @@ module ActiveRecord::Import #:nodoc:
25
25
  end
26
26
  end
27
27
 
28
+ class ActiveRecord::Associations::CollectionProxy
29
+ def import(*args, &block)
30
+ @association.import(*args, &block)
31
+ end
32
+ end
33
+
34
+ class ActiveRecord::Associations::CollectionAssociation
35
+ def import(*args, &block)
36
+ unless owner.persisted?
37
+ raise ActiveRecord::RecordNotSaved, "You cannot call import unless the parent is saved"
38
+ end
39
+
40
+ options = args.last.is_a?(Hash) ? args.pop : {}
41
+
42
+ model_klass = self.reflection.klass
43
+ symbolized_foreign_key = self.reflection.foreign_key.to_sym
44
+ symbolized_column_names = model_klass.column_names.map(&:to_sym)
45
+
46
+ owner_primary_key = self.owner.class.primary_key
47
+ owner_primary_key_value = self.owner.send(owner_primary_key)
48
+
49
+ # assume array of model objects
50
+ if args.last.is_a?( Array ) and args.last.first.is_a? ActiveRecord::Base
51
+ if args.length == 2
52
+ models = args.last
53
+ column_names = args.first
54
+ else
55
+ models = args.first
56
+ column_names = symbolized_column_names
57
+ end
58
+
59
+ if !symbolized_column_names.include?(symbolized_foreign_key)
60
+ column_names << symbolized_foreign_key
61
+ end
62
+
63
+ models.each do |m|
64
+ m.send "#{symbolized_foreign_key}=", owner_primary_key_value
65
+ end
66
+
67
+ return model_klass.import column_names, models, options
68
+
69
+ # supports empty array
70
+ elsif args.last.is_a?( Array ) and args.last.empty?
71
+ return ActiveRecord::Import::Result.new([], 0) if args.last.empty?
72
+
73
+ # supports 2-element array and array
74
+ elsif args.size == 2 and args.first.is_a?( Array ) and args.last.is_a?( Array )
75
+ column_names, array_of_attributes = args
76
+ symbolized_column_names = column_names.map(&:to_s)
77
+
78
+ if !symbolized_column_names.include?(symbolized_foreign_key)
79
+ column_names << symbolized_foreign_key
80
+ array_of_attributes.each { |attrs| attrs << owner_primary_key_value }
81
+ else
82
+ index = symbolized_column_names.index(symbolized_foreign_key)
83
+ array_of_attributes.each { |attrs| attrs[index] = owner_primary_key_value }
84
+ end
85
+
86
+ return model_klass.import column_names, array_of_attributes, options
87
+ else
88
+ raise ArgumentError.new( "Invalid arguments!" )
89
+ end
90
+ end
91
+ end
92
+
28
93
  class ActiveRecord::Base
29
94
  class << self
30
95
 
@@ -120,7 +185,7 @@ class ActiveRecord::Base
120
185
  # # Example using column_names and array_of_values
121
186
  # columns = [ :author_name, :title ]
122
187
  # values = [ [ 'zdennis', 'test post' ], [ 'jdoe', 'another test post' ] ]
123
- # BlogPost.import columns, values
188
+ # BlogPost.import columns, values
124
189
  #
125
190
  # # Example using column_names, array_of_value and options
126
191
  # columns = [ :author_name, :title ]
@@ -142,7 +207,7 @@ class ActiveRecord::Base
142
207
  #
143
208
  # == On Duplicate Key Update (MySQL only)
144
209
  #
145
- # The :on_duplicate_key_update option can be either an Array or a Hash.
210
+ # The :on_duplicate_key_update option can be either an Array or a Hash.
146
211
  #
147
212
  # ==== Using an Array
148
213
  #
@@ -170,6 +235,7 @@ class ActiveRecord::Base
170
235
  options.merge!( args.pop ) if args.last.is_a? Hash
171
236
 
172
237
  is_validating = options.delete( :validate )
238
+ is_validating = true unless options[:validate_with_context].nil?
173
239
 
174
240
  # assume array of model objects
175
241
  if args.last.is_a?( Array ) and args.last.first.is_a? ActiveRecord::Base
@@ -254,7 +320,7 @@ class ActiveRecord::Base
254
320
  instance = new do |model|
255
321
  hsh.each_pair{ |k,v| model.send("#{k}=", v) }
256
322
  end
257
- if not instance.valid?
323
+ if not instance.valid?(options[:validate_with_context])
258
324
  array_of_attributes[ i ] = nil
259
325
  failed_instances << instance
260
326
  end
@@ -331,11 +397,11 @@ class ActiveRecord::Base
331
397
  # be sure to query sequence_name *last*, only if cheaper tests fail, because it's costly
332
398
  if val.nil? && column.name == primary_key && !sequence_name.blank?
333
399
  connection_memo.next_value_for_sequence(sequence_name)
334
- else
335
- if serialized_attributes.include?(column.name)
336
- connection_memo.quote(serialized_attributes[column.name].dump(val), column)
400
+ elsif column
401
+ if column.respond_to?(:type_cast_from_user) # Rails 4.2 and higher
402
+ connection_memo.quote(column.type_cast_from_user(val), column)
337
403
  else
338
- connection_memo.quote(val, column)
404
+ connection_memo.quote(column.type_cast(val), column) # Rails 3.1, 3.2, and 4.1
339
405
  end
340
406
  end
341
407
  end
@@ -347,7 +413,7 @@ class ActiveRecord::Base
347
413
  AREXT_RAILS_COLUMNS[:create].each_pair do |key, blk|
348
414
  if self.column_names.include?(key)
349
415
  value = blk.call
350
- if index=column_names.index(key)
416
+ if index=column_names.index(key) || index=column_names.index(key.to_sym)
351
417
  # replace every instance of the array of attributes with our value
352
418
  array_of_attributes.each{ |arr| arr[index] = value if arr[index].nil? }
353
419
  else
@@ -360,7 +426,7 @@ class ActiveRecord::Base
360
426
  AREXT_RAILS_COLUMNS[:update].each_pair do |key, blk|
361
427
  if self.column_names.include?(key)
362
428
  value = blk.call
363
- if index=column_names.index(key)
429
+ if index=column_names.index(key) || index=column_names.index(key.to_sym)
364
430
  # replace every instance of the array of attributes with our value
365
431
  array_of_attributes.each{ |arr| arr[index] = value }
366
432
  else
@@ -42,9 +42,14 @@ module ActiveRecord # :nodoc:
42
42
  if matched_instance
43
43
  instance.clear_aggregation_cache
44
44
  instance.clear_association_cache
45
- instance.instance_variable_set '@attributes', matched_instance.attributes
46
- instance.instance_variable_set '@attributes_cache', {}
47
- instance.changed_attributes.clear
45
+ instance.instance_variable_set :@attributes, matched_instance.instance_variable_get(:@attributes)
46
+
47
+ if instance.respond_to?(:clear_changes_information)
48
+ instance.clear_changes_information # Rails 4.1 and higher
49
+ else
50
+ instance.changed_attributes.clear # Rails 3.1, 3.2
51
+ end
52
+
48
53
  # Since the instance now accurately reflects the record in
49
54
  # the database, ensure that instance.persisted? is true.
50
55
  instance.instance_variable_set '@new_record', false
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module Import
3
- VERSION = "0.6.0"
3
+ VERSION = "0.7.0"
4
4
  end
5
5
  end
data/test/import_test.rb CHANGED
@@ -19,7 +19,7 @@ describe "#import" do
19
19
  end
20
20
  end
21
21
 
22
- describe "with non-default ActiveRecord models" do
22
+ describe "with non-default ActiveRecord models" do
23
23
  context "that have a non-standard primary key (that is no sequence)" do
24
24
  it "should import models successfully" do
25
25
  assert_difference "Widget.count", +3 do
@@ -32,6 +32,7 @@ describe "#import" do
32
32
  context "with :validation option" do
33
33
  let(:columns) { %w(title author_name) }
34
34
  let(:valid_values) { [[ "LDAP", "Jerry Carter"], ["Rails Recipes", "Chad Fowler"]] }
35
+ let(:valid_values_with_context) { [[ 1111, "Jerry Carter"], [2222, "Chad Fowler"]] }
35
36
  let(:invalid_values) { [[ "The RSpec Book", ""], ["Agile+UX", ""]] }
36
37
 
37
38
  context "with validation checks turned off" do
@@ -61,12 +62,24 @@ describe "#import" do
61
62
  end
62
63
  end
63
64
 
65
+ it "should import valid data with on option" do
66
+ assert_difference "Topic.count", +2 do
67
+ result = Topic.import columns, valid_values_with_context, :validate_with_context => :context_test
68
+ end
69
+ end
70
+
64
71
  it "should not import invalid data" do
65
72
  assert_no_difference "Topic.count" do
66
73
  result = Topic.import columns, invalid_values, :validate => true
67
74
  end
68
75
  end
69
76
 
77
+ it "should import invalid data with on option" do
78
+ assert_no_difference "Topic.count" do
79
+ result = Topic.import columns, valid_values, :validate_with_context => :context_test
80
+ end
81
+ end
82
+
70
83
  it "should report the failed instances" do
71
84
  results = Topic.import columns, invalid_values, :validate => true
72
85
  assert_equal invalid_values.size, results.failed_instances.size
@@ -238,7 +251,7 @@ describe "#import" do
238
251
  setup do
239
252
  @existing_book = Book.create(title: "Fell", author_name: "Curry", publisher: "Bayer", created_at: 2.years.ago.utc, created_on: 2.years.ago.utc)
240
253
  ActiveRecord::Base.default_timezone = :utc
241
- Delorean.time_travel_to("5 minutes ago") do
254
+ Timecop.freeze Chronic.parse("5 minutes ago") do
242
255
  assert_difference "Book.count", +2 do
243
256
  result = Book.import ["title", "author_name", "publisher", "created_at", "created_on"], [["LDAP", "Big Bird", "Del Rey", nil, nil], [@existing_book.title, @existing_book.author_name, @existing_book.publisher, @existing_book.created_at, @existing_book.created_on]]
244
257
  end
@@ -272,26 +285,25 @@ describe "#import" do
272
285
  end
273
286
 
274
287
  context "when a custom time zone is set" do
288
+ let(:time){ Chronic.parse("5 minutes ago") }
289
+
275
290
  setup do
276
- original_timezone = ActiveRecord::Base.default_timezone
277
- ActiveRecord::Base.default_timezone = :utc
278
- Delorean.time_travel_to("5 minutes ago") do
291
+ Timecop.freeze(time) do
279
292
  assert_difference "Book.count", +1 do
280
293
  result = Book.import [:title, :author_name, :publisher], [["LDAP", "Big Bird", "Del Rey"]]
281
294
  end
282
295
  end
283
- ActiveRecord::Base.default_timezone = original_timezone
284
296
  @book = Book.last
285
297
  end
286
298
 
287
299
  it "should set the created_at and created_on timestamps for new records" do
288
- assert_equal 5.minutes.ago.utc.strftime("%H:%M"), @book.created_at.strftime("%H:%M")
289
- assert_equal 5.minutes.ago.utc.strftime("%H:%M"), @book.created_on.strftime("%H:%M")
300
+ assert_in_delta time.to_i, @book.created_at.to_i, 1.second
301
+ assert_in_delta time.to_i, @book.created_on.to_i, 1.second
290
302
  end
291
303
 
292
304
  it "should set the updated_at and updated_on timestamps for new records" do
293
- assert_equal 5.minutes.ago.utc.strftime("%H:%M"), @book.updated_at.strftime("%H:%M")
294
- assert_equal 5.minutes.ago.utc.strftime("%H:%M"), @book.updated_on.strftime("%H:%M")
305
+ assert_in_delta time.to_i, @book.updated_at.to_i, 1.second
306
+ assert_in_delta time.to_i, @book.updated_on.to_i, 1.second
295
307
  end
296
308
  end
297
309
  end
@@ -326,6 +338,31 @@ describe "#import" do
326
338
  end
327
339
  end
328
340
  end
341
+
342
+ it "works importing models" do
343
+ topic = FactoryGirl.create :topic
344
+ books = [
345
+ Book.new(:author_name => "Author #1", :title => "Book #1"),
346
+ Book.new(:author_name => "Author #2", :title => "Book #2"),
347
+ ]
348
+ topic.books.import books
349
+ assert_equal 2, topic.books.count
350
+ assert topic.books.detect { |b| b.title == "Book #1" && b.author_name == "Author #1" }
351
+ assert topic.books.detect { |b| b.title == "Book #2" && b.author_name == "Author #2" }
352
+ end
353
+
354
+ it "works importing array of columns and values" do
355
+ topic = FactoryGirl.create :topic
356
+ books = [
357
+ Book.new(:author_name => "Foo", :title => "Baz"),
358
+ Book.new(:author_name => "Foo2", :title => "Baz2"),
359
+ ]
360
+ topic.books.import [:author_name, :title], [["Author #1", "Book #1"], ["Author #2", "Book #2"]]
361
+ assert_equal 2, topic.books.count
362
+ assert topic.books.detect { |b| b.title == "Book #1" && b.author_name == "Author #1" }
363
+ assert topic.books.detect { |b| b.title == "Book #2" && b.author_name == "Author #2" }
364
+ end
365
+
329
366
  end
330
367
 
331
368
  describe "importing when model has default_scope" do
@@ -355,5 +392,4 @@ describe "#import" do
355
392
  assert_equal({:a => :b}, Widget.find_by_w_id(1).data)
356
393
  end
357
394
  end
358
-
359
395
  end
data/test/models/topic.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  class Topic < ActiveRecord::Base
2
2
  validates_presence_of :author_name
3
+ validates :title, numericality: { only_integer: true }, on: :context_test
4
+
3
5
  has_many :books
4
6
  belongs_to :parent, :class_name => "Topic"
5
-
7
+
6
8
  composed_of :description, :mapping => [ %w(title title), %w(author_name author_name)], :allow_nil => true, :class_name => "TopicDescription"
7
9
  end
@@ -55,7 +55,7 @@ class ActiveSupport::TestCase
55
55
  end
56
56
 
57
57
  def it(description, &blk)
58
- define_method("test: #{name} #{description}", &blk)
58
+ define_method("test_#{name}_#{description}", &blk)
59
59
  end
60
60
  end
61
61
 
@@ -3,29 +3,29 @@ class ActiveSupport::TestCase
3
3
  def self.extended(klass)
4
4
  klass.instance_eval do
5
5
  assertion(:should_not_update_created_at_on_timestamp_columns) do
6
- Delorean.time_travel_to("5 minutes from now") do
6
+ Timecop.freeze Chronic.parse("5 minutes from now") do
7
7
  perform_import
8
- assert_equal @topic.created_at.to_i, updated_topic.created_at.to_i
9
- assert_equal @topic.created_on.to_i, updated_topic.created_on.to_i
8
+ assert_in_delta @topic.created_at.to_i, updated_topic.created_at.to_i, 1
9
+ assert_in_delta @topic.created_on.to_i, updated_topic.created_on.to_i, 1
10
10
  end
11
11
  end
12
12
 
13
13
  assertion(:should_update_updated_at_on_timestamp_columns) do
14
14
  time = Chronic.parse("5 minutes from now")
15
- Delorean.time_travel_to(time) do
15
+ Timecop.freeze time do
16
16
  perform_import
17
- assert_equal time.to_i, updated_topic.updated_at.to_i
18
- assert_equal time.to_i, updated_topic.updated_on.to_i
17
+ assert_in_delta time.to_i, updated_topic.updated_at.to_i, 1
18
+ assert_in_delta time.to_i, updated_topic.updated_on.to_i, 1
19
19
  end
20
20
  end
21
21
 
22
22
  assertion(:should_not_update_timestamps) do
23
- Delorean.time_travel_to("5 minutes from now") do
23
+ Timecop.freeze Chronic.parse("5 minutes from now") do
24
24
  perform_import :timestamps => false
25
- assert_equal @topic.created_at.to_i, updated_topic.created_at.to_i
26
- assert_equal @topic.created_on.to_i, updated_topic.created_on.to_i
27
- assert_equal @topic.updated_at.to_i, updated_topic.updated_at.to_i
28
- assert_equal @topic.updated_on.to_i, updated_topic.updated_on.to_i
25
+ assert_in_delta @topic.created_at.to_i, updated_topic.created_at.to_i, 1
26
+ assert_in_delta @topic.created_on.to_i, updated_topic.created_on.to_i, 1
27
+ assert_in_delta @topic.updated_at.to_i, updated_topic.updated_at.to_i, 1
28
+ assert_in_delta @topic.updated_on.to_i, updated_topic.updated_on.to_i, 1
29
29
  end
30
30
  end
31
31
 
@@ -52,4 +52,4 @@ class ActiveSupport::TestCase
52
52
  end
53
53
  end
54
54
  end
55
- end
55
+ end
@@ -14,7 +14,7 @@ def should_support_mysql_import_functionality
14
14
  end
15
15
 
16
16
  macro(:perform_import){ raise "supply your own #perform_import in a context below" }
17
- macro(:updated_topic){ Topic.find(@topic) }
17
+ macro(:updated_topic){ Topic.find(@topic.id) }
18
18
 
19
19
  context "given columns and values with :validation checks turned off" do
20
20
  let(:columns){ %w( id title author_name author_email_address parent_id ) }
data/test/test_helper.rb CHANGED
@@ -10,13 +10,19 @@ ENV["RAILS_ENV"] = "test"
10
10
  require "bundler"
11
11
  Bundler.setup
12
12
 
13
- require "logger"
14
- require 'test/unit'
15
13
  require "active_record"
16
14
  require "active_record/fixtures"
17
15
  require "active_support/test_case"
18
16
 
19
- require "delorean"
17
+ if ActiveSupport::VERSION::STRING < "4.1"
18
+ require 'test/unit'
19
+ else
20
+ require 'active_support/testing/autorun'
21
+ end
22
+
23
+ require 'timecop'
24
+ require 'chronic'
25
+
20
26
  require "ruby-debug" if RUBY_VERSION.to_f < 1.9
21
27
 
22
28
  adapter = ENV["ARE_DB"] || "sqlite3"
@@ -25,6 +31,7 @@ FileUtils.mkdir_p 'log'
25
31
  ActiveRecord::Base.logger = Logger.new("log/test.log")
26
32
  ActiveRecord::Base.logger.level = Logger::DEBUG
27
33
  ActiveRecord::Base.configurations["test"] = YAML.load_file(test_dir.join("database.yml"))[adapter]
34
+ ActiveRecord::Base.default_timezone = :utc
28
35
 
29
36
  require "activerecord-import"
30
37
  ActiveRecord::Base.establish_connection "test"
data/test/travis/build.sh CHANGED
@@ -1,19 +1,30 @@
1
- #!/bin/sh
1
+ #!/bin/bash
2
2
  set -e
3
3
  set +x
4
4
 
5
- bundle exec rake test:em_mysql2 # Run tests for em_mysql2
6
- bundle exec rake test:mysql # Run tests for mysql
7
- bundle exec rake test:mysql2 # Run tests for mysql2
8
- bundle exec rake test:mysql2spatial # Run tests for mysql2spatial
9
- bundle exec rake test:mysqlspatial # Run tests for mysqlspatial
10
- bundle exec rake test:postgis # Run tests for postgis
11
- bundle exec rake test:postgresql # Run tests for postgresql
12
- bundle exec rake test:seamless_database_pool # Run tests for seamless_database_pool
13
- bundle exec rake test:spatialite # Run tests for spatialite
14
- # so far the version installed in travis seems < 3.7.11 so we cannot test sqlite3 on it
15
- # bundle exec rake test:sqlite3
5
+ function run {
6
+ echo "Running: AR_VERSION=$AR_VERSION $@"
7
+ $@
8
+ }
16
9
 
17
- #jruby
18
- #bundle exec rake test:jdbcmysql # Run tests for jdbcmysql
19
- #bundle exec rake test:jdbcpostgresql # Run tests for jdbcpostgresql
10
+ for activerecord_version in "3.1" "3.2" "4.1" "4.2" ; do
11
+ export AR_VERSION=$activerecord_version
12
+
13
+ bundle update activerecord
14
+
15
+ run run bundle exec rake test:em_mysql2 # Run tests for em_mysql2
16
+ run bundle exec rake test:mysql # Run tests for mysql
17
+ run bundle exec rake test:mysql2 # Run tests for mysql2
18
+ run bundle exec rake test:mysql2spatial # Run tests for mysql2spatial
19
+ run bundle exec rake test:mysqlspatial # Run tests for mysqlspatial
20
+ run bundle exec rake test:postgis # Run tests for postgis
21
+ run bundle exec rake test:postgresql # Run tests for postgresql
22
+ run bundle exec rake test:seamless_database_pool # Run tests for seamless_database_pool
23
+ run bundle exec rake test:spatialite # Run tests for spatialite
24
+ # so far the version installed in travis seems < 3.7.11 so we cannot test sqlite3 on it
25
+ # run bundle exec rake test:sqlite3
26
+
27
+ #jruby
28
+ #bundle exec rake test:jdbcmysql # Run tests for jdbcmysql
29
+ #bundle exec rake test:jdbcpostgresql # Run tests for jdbcpostgresql
30
+ done
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-import
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Dennis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-08 00:00:00.000000000 Z
11
+ date: 2014-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -70,6 +70,8 @@ files:
70
70
  - gemfiles/3.1.gemfile
71
71
  - gemfiles/3.2.gemfile
72
72
  - gemfiles/4.0.gemfile
73
+ - gemfiles/4.1.gemfile
74
+ - gemfiles/4.2.gemfile
73
75
  - lib/activerecord-import.rb
74
76
  - lib/activerecord-import/active_record/adapters/abstract_adapter.rb
75
77
  - lib/activerecord-import/active_record/adapters/em_mysql2_adapter.rb
@@ -159,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
161
  version: '0'
160
162
  requirements: []
161
163
  rubyforge_project:
162
- rubygems_version: 2.2.2
164
+ rubygems_version: 2.4.3
163
165
  signing_key:
164
166
  specification_version: 4
165
167
  summary: Bulk-loading extension for ActiveRecord
@@ -207,4 +209,3 @@ test_files:
207
209
  - test/travis/database.yml
208
210
  - test/value_sets_bytes_parser_test.rb
209
211
  - test/value_sets_records_parser_test.rb
210
- has_rdoc: