active_record_data_loader 1.0.0 → 1.0.1
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 +4 -4
- data/CHANGELOG.md +15 -0
- data/Gemfile.lock +3 -1
- data/active_record_data_loader.gemspec +1 -0
- data/lib/active_record_data_loader.rb +4 -0
- data/lib/active_record_data_loader/active_record/column_configuration.rb +1 -0
- data/lib/active_record_data_loader/active_record/datetime_value_generator.rb +21 -0
- data/lib/active_record_data_loader/active_record/per_row_value_cache.rb +33 -0
- data/lib/active_record_data_loader/version.rb +1 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddff4ba719de66b138820d4e5c257df064e85259e595156f5f25c54622e9c60a
|
4
|
+
data.tar.gz: e82e4ae901cd557a197c4b5c66069bbb01e2cf64973c4b885a35661f1ecb05ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a6d299daed5d81cd92f65206307ceab39e4147afa8956822890941426e4765b197d149d97992d19bc7506697a76cd9e6056623549eeb632cc884dc03f02cea5
|
7
|
+
data.tar.gz: a68aca773f47b9b06f833ad0a8e6eaf6bb29b76d9d966597c17f40855430c799703d75cc8ef34fa209e66cd0cc50b220e00b51b086b1cb136c92607a9f0c873c
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Change log
|
2
|
+
|
3
|
+
## [v1.0.1] - 2019-06-16
|
4
|
+
|
5
|
+
[Diff](https://github.com/abeiderman/active_record_data_loader/compare/v1.0.0...v1.0.1)
|
6
|
+
|
7
|
+
### Enhancements:
|
8
|
+
* Generate values for datetime column types. This also fixes the fact that `created_at` and `updated_at` were not being populated by default.
|
9
|
+
|
10
|
+
## [v1.0.0] - 2019-06-15
|
11
|
+
|
12
|
+
Initial stable release
|
13
|
+
|
14
|
+
[v1.0.0]: https://github.com/abeiderman/active_record_data_loader/releases/tag/v1.0.0
|
15
|
+
[v1.0.1]: https://github.com/abeiderman/active_record_data_loader/releases/tag/v1.0.1
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
active_record_data_loader (1.0.
|
4
|
+
active_record_data_loader (1.0.1)
|
5
5
|
activerecord (>= 4.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -82,6 +82,7 @@ GEM
|
|
82
82
|
tins (~> 1.0)
|
83
83
|
thor (0.20.3)
|
84
84
|
thread_safe (0.3.6)
|
85
|
+
timecop (0.9.1)
|
85
86
|
tins (1.20.3)
|
86
87
|
tzinfo (1.2.5)
|
87
88
|
thread_safe (~> 0.1)
|
@@ -102,6 +103,7 @@ DEPENDENCIES
|
|
102
103
|
rspec-collection_matchers
|
103
104
|
rubocop
|
104
105
|
sqlite3
|
106
|
+
timecop
|
105
107
|
|
106
108
|
BUNDLED WITH
|
107
109
|
2.0.1
|
@@ -4,9 +4,11 @@ require "active_record_data_loader/version"
|
|
4
4
|
require "active_record"
|
5
5
|
require "active_record_data_loader/configuration"
|
6
6
|
require "active_record_data_loader/data_faker"
|
7
|
+
require "active_record_data_loader/active_record/per_row_value_cache"
|
7
8
|
require "active_record_data_loader/active_record/integer_value_generator"
|
8
9
|
require "active_record_data_loader/active_record/text_value_generator"
|
9
10
|
require "active_record_data_loader/active_record/enum_value_generator"
|
11
|
+
require "active_record_data_loader/active_record/datetime_value_generator"
|
10
12
|
require "active_record_data_loader/active_record/column_configuration"
|
11
13
|
require "active_record_data_loader/active_record/belongs_to_configuration"
|
12
14
|
require "active_record_data_loader/active_record/polymorphic_belongs_to_configuration"
|
@@ -42,6 +44,8 @@ module ActiveRecordDataLoader
|
|
42
44
|
end
|
43
45
|
|
44
46
|
def load_data
|
47
|
+
ActiveRecordDataLoader::ActiveRecord::PerRowValueCache.clear
|
48
|
+
|
45
49
|
definition.models.map do |m|
|
46
50
|
generator = ActiveRecordDataLoader::ActiveRecord::ModelDataGenerator.new(
|
47
51
|
model: m.klass,
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveRecordDataLoader
|
4
|
+
module ActiveRecord
|
5
|
+
class DatetimeValueGenerator
|
6
|
+
class << self
|
7
|
+
def generator_for(model_class:, ar_column:)
|
8
|
+
->(row) { timestamp(model_class, row) }
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def timestamp(model, row_number)
|
14
|
+
PerRowValueCache[:datetime].get_or_set(model: model, row: row_number) do
|
15
|
+
Time.now.utc
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveRecordDataLoader
|
4
|
+
module ActiveRecord
|
5
|
+
class PerRowValueCache
|
6
|
+
class << self
|
7
|
+
def [](key)
|
8
|
+
caches[key] ||= new
|
9
|
+
end
|
10
|
+
|
11
|
+
def clear
|
12
|
+
@caches = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def caches
|
18
|
+
@caches ||= clear
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize
|
23
|
+
@row_caches = Hash.new { |hash, key| hash[key] = {} }
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_or_set(model:, row:)
|
27
|
+
@row_caches[model.name].shift if @row_caches[model.name].size > 1
|
28
|
+
|
29
|
+
@row_caches[model.name][row] ||= yield
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_data_loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alejandro Beiderman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: timecop
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
167
181
|
description: A utility to bulk load test data for performance testing.
|
168
182
|
email:
|
169
183
|
- abeiderman@gmail.com
|
@@ -178,6 +192,7 @@ files:
|
|
178
192
|
- ".rubocop.yml"
|
179
193
|
- ".travis.yml"
|
180
194
|
- Appraisals
|
195
|
+
- CHANGELOG.md
|
181
196
|
- CODE_OF_CONDUCT.md
|
182
197
|
- Gemfile
|
183
198
|
- Gemfile.lock
|
@@ -198,9 +213,11 @@ files:
|
|
198
213
|
- lib/active_record_data_loader.rb
|
199
214
|
- lib/active_record_data_loader/active_record/belongs_to_configuration.rb
|
200
215
|
- lib/active_record_data_loader/active_record/column_configuration.rb
|
216
|
+
- lib/active_record_data_loader/active_record/datetime_value_generator.rb
|
201
217
|
- lib/active_record_data_loader/active_record/enum_value_generator.rb
|
202
218
|
- lib/active_record_data_loader/active_record/integer_value_generator.rb
|
203
219
|
- lib/active_record_data_loader/active_record/model_data_generator.rb
|
220
|
+
- lib/active_record_data_loader/active_record/per_row_value_cache.rb
|
204
221
|
- lib/active_record_data_loader/active_record/polymorphic_belongs_to_configuration.rb
|
205
222
|
- lib/active_record_data_loader/active_record/text_value_generator.rb
|
206
223
|
- lib/active_record_data_loader/bulk_insert_strategy.rb
|