activerecord-import 0.6.0 → 0.7.0

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: 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: