praxis-mapper 4.1 → 4.1.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 +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.
|