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 +4 -4
- data/Gemfile +7 -1
- data/gemfiles/4.1.gemfile +4 -0
- data/gemfiles/4.2.gemfile +4 -0
- data/lib/activerecord-import/import.rb +75 -9
- data/lib/activerecord-import/synchronize.rb +8 -3
- data/lib/activerecord-import/version.rb +1 -1
- data/test/import_test.rb +47 -11
- data/test/models/topic.rb +3 -1
- data/test/support/active_support/test_case_extensions.rb +1 -1
- data/test/support/mysql/assertions.rb +12 -12
- data/test/support/mysql/import_examples.rb +1 -1
- data/test/test_helper.rb +10 -3
- data/test/travis/build.sh +26 -15
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7aec7bd524a95df0244ff6fd857ca4b534fffe7e
|
4
|
+
data.tar.gz: 3680f99953ff777985422c2a349eacd88b7df0d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 "
|
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__)
|
@@ -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
|
-
|
335
|
-
if
|
336
|
-
connection_memo.quote(
|
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
|
46
|
-
|
47
|
-
instance.
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
289
|
-
|
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
|
-
|
294
|
-
|
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
|
@@ -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
|
-
|
6
|
+
Timecop.freeze Chronic.parse("5 minutes from now") do
|
7
7
|
perform_import
|
8
|
-
|
9
|
-
|
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
|
-
|
15
|
+
Timecop.freeze time do
|
16
16
|
perform_import
|
17
|
-
|
18
|
-
|
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
|
-
|
23
|
+
Timecop.freeze Chronic.parse("5 minutes from now") do
|
24
24
|
perform_import :timestamps => false
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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
|
-
|
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/
|
1
|
+
#!/bin/bash
|
2
2
|
set -e
|
3
3
|
set +x
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
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
|
-
|
18
|
-
|
19
|
-
|
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.
|
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-
|
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.
|
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:
|