active_record_data_loader 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|