praxis-mapper 4.1 → 4.1.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 +5 -0
- data/lib/praxis-mapper/identity_map.rb +16 -3
- data/lib/praxis-mapper/version.rb +1 -1
- data/spec/praxis-mapper/identity_map_spec.rb +18 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d6680ca8a7a141d49b78517c33a45305cba5ac1
|
4
|
+
data.tar.gz: c9fe79656d4ae8d65b00d91a8aa1f31f8c43c264
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b194a3a75bc1a36cb1d62b977ba63fef76c968c1c2927b6c2e2404925a89a82a49defd02d355b8e0578fc5f6126d3602cb9339d840d69ad3e31e19831f1e1031
|
7
|
+
data.tar.gz: 0c7f61c1b671de5ed918c3e2591b2dbdd1bfd6867353a88fc66784e4e347d9b3fc94b3698b5f3a46a003f00c8e64283429a4bc3be9025ba0732c7ee79353319c
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
module Praxis::Mapper
|
6
6
|
class IdentityMap
|
7
7
|
include IdentityMapExtensions::Persistence
|
8
|
-
|
8
|
+
|
9
9
|
class UnloadedRecordException < StandardError; end;
|
10
10
|
class UnsupportedModel < StandardError; end;
|
11
11
|
class UnknownIdentity < StandardError; end;
|
@@ -185,7 +185,20 @@ module Praxis::Mapper
|
|
185
185
|
end
|
186
186
|
end
|
187
187
|
|
188
|
-
|
188
|
+
# Last parameter in array can be a hash of objects
|
189
|
+
# It is implemented this way (instead of (*models, instrument: true)) because when passing in
|
190
|
+
# Sequel models, ruby will invoke the ".to_hash" on them, causing a "load" when trying to restructure the args
|
191
|
+
def finalize!(*models_and_opts)
|
192
|
+
|
193
|
+
models, instrument = if models_and_opts.last.kind_of?(::Hash)
|
194
|
+
ins = models_and_opts.last.fetch(:instrument) do
|
195
|
+
true
|
196
|
+
end
|
197
|
+
[ models_and_opts[0..-2], ins ]
|
198
|
+
else
|
199
|
+
[ models_and_opts, true ]
|
200
|
+
end
|
201
|
+
|
189
202
|
if instrument
|
190
203
|
ActiveSupport::Notifications.instrument 'praxis.mapper.finalize' do
|
191
204
|
_finalize!(*models)
|
@@ -349,7 +362,7 @@ module Praxis::Mapper
|
|
349
362
|
value = values[0]
|
350
363
|
if @row_keys[model].has_key?(key)
|
351
364
|
res = @row_keys[model][key][value]
|
352
|
-
|
365
|
+
|
353
366
|
if res
|
354
367
|
[res]
|
355
368
|
else
|
@@ -304,6 +304,24 @@ describe Praxis::Mapper::IdentityMap do
|
|
304
304
|
identity_map.finalize!(instrument: false)
|
305
305
|
end
|
306
306
|
|
307
|
+
context 'plays well with Sequel models' do
|
308
|
+
# The reason to test agains Sequel models is that the destructuring of args
|
309
|
+
# for the _finalize! call caused unexpecting "loads" due to invoking .to_hash on them, see function for details
|
310
|
+
it 'calls the _finalize! with just the one model passed' do
|
311
|
+
identity_map.should_receive(:_finalize!).with(UserModel)
|
312
|
+
identity_map.finalize!(UserModel)
|
313
|
+
end
|
314
|
+
|
315
|
+
it 'calls the _finalize! with just the models passed' do
|
316
|
+
identity_map.should_receive(:_finalize!).with(UserModel,PostModel)
|
317
|
+
identity_map.finalize!(UserModel,PostModel)
|
318
|
+
end
|
319
|
+
|
320
|
+
it 'calls the _finalize! discarding instrument opts' do
|
321
|
+
identity_map.should_receive(:_finalize!).with(UserModel)
|
322
|
+
identity_map.finalize!(UserModel, instrument: false)
|
323
|
+
end
|
324
|
+
end
|
307
325
|
end
|
308
326
|
|
309
327
|
context "#finalize_model!" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: praxis-mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep M. Blanquer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-09-
|
12
|
+
date: 2015-09-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: randexp
|
@@ -316,7 +316,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
316
|
version: '0'
|
317
317
|
requirements: []
|
318
318
|
rubyforge_project:
|
319
|
-
rubygems_version: 2.
|
319
|
+
rubygems_version: 2.2.2
|
320
320
|
signing_key:
|
321
321
|
specification_version: 4
|
322
322
|
summary: A multi-datastore library designed for efficiency in loading large datasets.
|