abstract_importer 1.9.0 → 1.10.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
  SHA256:
3
- metadata.gz: 0c34dc2d6f5558255316b38ea0f37d7090e18081a7d86a0af0d0a9a9370e30b5
4
- data.tar.gz: ccd295d5ff7fe47394b8629db231ca8933501e9c55bec8af8d303ab7e8e1d384
3
+ metadata.gz: e6ccc6e819a1519872b187dac45ceba5e56244f9036474f9c8fd2cb71770f8da
4
+ data.tar.gz: d6f43a92567a9cabc4883a1acfe3ebab3522f1e7b77fd3ac1df58c76a7d8096d
5
5
  SHA512:
6
- metadata.gz: dbeb628bcc04d3f1572721f7c97de4f0a2ec83c0b06ede1c4f61456318ce3da42fe129eecec6edb376ae4bdc656de25e993291ed6c2375788f1f11dc4cdcfb62
7
- data.tar.gz: ea4e8446bda13ca443274afb141a0f9c2e965ba010da76cca5dcc3b6a6e480654e109a15d154a3510a94f10f9246adfaf7c65b774f9f7c8ff70f6a0e26c16448
6
+ metadata.gz: d0468d11985538e014eaa54f72d0097f41d3b9ce674cab8b5dbd19ba9361ff1dc1ed921701d16c5cab773f03470b2e7f1c423e720806048b750344b3208760b0
7
+ data.tar.gz: 32ea6b37fcfebc6c7bddf3d31397ad30f1cd102e495fe7419d02706ef4c3eb43e39e5ead633d36a2c6d2d401e28d196335546a8a977095e8f7803fff23cf393e
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
  services:
9
9
  postgres:
10
- image: postgres:10.11
10
+ image: postgres:17
11
11
  env:
12
12
  POSTGRES_PASSWORD: password
13
13
  POSTGRES_DB: abstract_importer_test
@@ -20,7 +20,7 @@ jobs:
20
20
  - name: Setup Ruby
21
21
  uses: ruby/setup-ruby@v1
22
22
  with:
23
- ruby-version: 2.6
23
+ ruby-version: 4.0
24
24
  bundler-cache: true
25
25
  - name: Run the Tests
26
26
  env:
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .DS_Store
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.5
1
+ 4.0.6
@@ -17,9 +17,11 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency "activerecord", ">= 6.0"
21
- spec.add_dependency "activesupport", ">= 6.0"
20
+ spec.add_dependency "activerecord", ">= 7.0"
21
+ spec.add_dependency "activesupport", ">= 7.0"
22
22
  spec.add_dependency "progressbar"
23
+ spec.add_dependency "benchmark", ">= 0.4.0"
24
+ spec.add_dependency "ostruct"
23
25
 
24
26
  spec.add_development_dependency "bundler"
25
27
  spec.add_development_dependency "minitest-reporters"
@@ -1,3 +1,4 @@
1
+ require "benchmark"
1
2
  require "active_support/core_ext/module/delegation"
2
3
  require "abstract_importer/import_options"
3
4
  require "abstract_importer/import_plan"
@@ -109,12 +110,12 @@ module AbstractImporter
109
110
  {}.tap do |results|
110
111
  reporter.start_all(self)
111
112
 
112
- setup_ms = Benchmark.ms do
113
+ setup_ms = benchmark do
113
114
  setup
114
115
  end
115
116
  reporter.finish_setup(self, setup_ms)
116
117
 
117
- ms = Benchmark.ms do
118
+ ms = benchmark do
118
119
  with_transaction do
119
120
  collection_importers.each do |importer|
120
121
  results[importer.name] = importer.perform!
@@ -122,7 +123,7 @@ module AbstractImporter
122
123
  end
123
124
  end
124
125
 
125
- teardown_ms = Benchmark.ms do
126
+ teardown_ms = benchmark do
126
127
  teardown
127
128
  end
128
129
  reporter.finish_teardown(self, teardown_ms)
@@ -302,5 +303,9 @@ module AbstractImporter
302
303
  end
303
304
  end
304
305
 
306
+ def benchmark
307
+ Benchmark.realtime { yield } * 1_000
308
+ end
309
+
305
310
  end
306
311
  end
@@ -1,3 +1,4 @@
1
+ require "benchmark"
1
2
  require "abstract_importer/strategies"
2
3
  require "abstract_importer/mapping"
3
4
  require "abstract_importer/polymorphic_mapping"
@@ -39,7 +40,7 @@ module AbstractImporter
39
40
  prepare!
40
41
 
41
42
  invoke_callback(:before_all)
42
- summary.ms = Benchmark.ms do
43
+ summary.ms = 1000 * Benchmark.realtime do
43
44
  each_new_record do |attributes|
44
45
  strategy.process_record(attributes)
45
46
  end
@@ -84,7 +84,12 @@ module AbstractImporter
84
84
 
85
85
  def cast_result(result, table_name)
86
86
  types_by_column = result.columns.each_with_object({}) do |column_name, types|
87
- types[column_name] = collection.scope.connection.lookup_cast_type_from_column(collection.scope.columns.find { |column| column.name == column_name })
87
+ connection = collection.scope.connection
88
+ column = collection.scope.columns.find { |column| column.name == column_name }
89
+
90
+ types[column_name] = connection.respond_to?(:lookup_cast_type_from_column) ?
91
+ connection.lookup_cast_type_from_column(column) :
92
+ connection.lookup_cast_type(column.sql_type)
88
93
  end
89
94
 
90
95
  result.to_a.map { |row|
@@ -1,3 +1,3 @@
1
1
  module AbstractImporter
2
- VERSION = "1.9.0"
2
+ VERSION = "1.10.0"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require "test_helper"
2
+ require "ostruct"
2
3
 
3
4
 
4
5
  class InsertStrategyTest < ActiveSupport::TestCase
@@ -17,7 +18,7 @@ class InsertStrategyTest < ActiveSupport::TestCase
17
18
  end
18
19
 
19
20
  should "import the records in batches" do
20
- mock.proxy(Student).insert_all(satisfy { |arg| arg.length == 3 }, returning: anything)
21
+ mock.proxy.instance_of(ActiveRecord::Relation).insert_all(satisfy { |arg| arg.length == 3 }, returning: anything)
21
22
  import!
22
23
  assert_equal [456, 457, 458], account.students.pluck(:legacy_id)
23
24
  end
data/test/test_helper.rb CHANGED
@@ -6,7 +6,7 @@ SimpleCov.start do
6
6
  end
7
7
 
8
8
  require "minitest/reporters/turn_reporter"
9
- MiniTest::Reporters.use! Minitest::Reporters::TurnReporter.new
9
+ Minitest::Reporters.use! Minitest::Reporters::TurnReporter.new
10
10
 
11
11
  require "pry"
12
12
  require "rr"
@@ -20,7 +20,7 @@ require "minitest/autorun"
20
20
 
21
21
 
22
22
 
23
- system "psql -c 'create database abstract_importer_test'"
23
+ system "psql -h localhost -U postgres -c 'create database abstract_importer_test'"
24
24
 
25
25
  if ENV["DATABASE_URL"]
26
26
  ActiveRecord::Base.establish_connection(ENV["DATABASE_URL"])
@@ -28,6 +28,7 @@ else
28
28
  ActiveRecord::Base.establish_connection(
29
29
  adapter: "postgresql",
30
30
  host: "localhost",
31
+ user: "postgres",
31
32
  database: "abstract_importer_test",
32
33
  verbosity: "quiet")
33
34
  end
@@ -17,7 +17,7 @@ class UpsertStrategyTest < ActiveSupport::TestCase
17
17
  end
18
18
 
19
19
  should "import the records in batches" do
20
- mock.proxy(Student).upsert_all(satisfy { |arg| arg.length == 3 }, unique_by: anything, returning: anything)
20
+ mock.proxy.instance_of(ActiveRecord::Relation).upsert_all(satisfy { |arg| arg.length == 3 }, unique_by: anything, returning: anything)
21
21
  import!
22
22
  assert_equal [456, 457, 458], account.students.pluck(:legacy_id)
23
23
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstract_importer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Lail
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-03-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activerecord
@@ -16,28 +15,28 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '6.0'
18
+ version: '7.0'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '6.0'
25
+ version: '7.0'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: activesupport
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '6.0'
32
+ version: '7.0'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '6.0'
39
+ version: '7.0'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: progressbar
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +51,34 @@ dependencies:
52
51
  - - ">="
53
52
  - !ruby/object:Gem::Version
54
53
  version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: benchmark
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.4.0
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 0.4.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: ostruct
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
55
82
  - !ruby/object:Gem::Dependency
56
83
  name: bundler
57
84
  requirement: !ruby/object:Gem::Requirement
@@ -206,7 +233,6 @@ dependencies:
206
233
  - - ">="
207
234
  - !ruby/object:Gem::Version
208
235
  version: '0'
209
- description:
210
236
  email:
211
237
  - bob.lail@cph.org
212
238
  executables: []
@@ -260,7 +286,6 @@ homepage: https://github.com/cph/abstract_importer
260
286
  licenses:
261
287
  - MIT
262
288
  metadata: {}
263
- post_install_message:
264
289
  rdoc_options: []
265
290
  require_paths:
266
291
  - lib
@@ -275,8 +300,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
300
  - !ruby/object:Gem::Version
276
301
  version: '0'
277
302
  requirements: []
278
- rubygems_version: 3.2.33
279
- signing_key:
303
+ rubygems_version: 4.0.16
280
304
  specification_version: 4
281
305
  summary: Provides services for the mass-import of complex relational data
282
306
  test_files: