perforated 0.9.1 → 0.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
  SHA1:
3
- metadata.gz: 330c81a4281ebab097c307068577fcd027ff4aec
4
- data.tar.gz: e29c1d1b11c2e4e4b696fcd5a3c28c3828bbcc33
3
+ metadata.gz: 907c4447153261709537b4ff03efd368be94f59a
4
+ data.tar.gz: 2761cf1f6cc3f8938b2eef515972ced97274c968
5
5
  SHA512:
6
- metadata.gz: 33ee71b9c0efcd1740583c7f21885ef6fa32e24b3079bc834f111fa180421ad55d059d7c3aad67a1a69151bf6644ffe79b4cfc1dbc9aadde4266d97f21e401f7
7
- data.tar.gz: 54253903fd62fe2e050ed1545862346cd15d2190494e22cb43dbbeb168205e4290460cb633b359f159c8b6a80fc403ef6795f53ea1a2008e7e03b7a6ab06d914
6
+ metadata.gz: 98b9a3c654f3908efc2d0e78f3dc1d2f8297cd6554d31ba4d13acfdb903222f8163fecbc534528053fd660edef089dfa8df94dc661df566d6981fdb6086d1e6b
7
+ data.tar.gz: e03fb7f70a5b36f4e0a4ed36d939b38dda8cbf9bbdb43e88d54f8650f8cf2d5c27793787c48620a7a81fb70990881b956c505a9fabbfa8bd1e119f317b33a183
data/CHANGELOG.md CHANGED
@@ -1,10 +1,17 @@
1
- ## Version 0.9.1
1
+ ## v0.10.0 2014-12-10
2
+
3
+ * Changed: No longer support batching during serialization. See cb00076 for more
4
+ details about why it was removed.
5
+ * Fixed: The result of a yielded block is now used to supply the `cache_key`,
6
+ which is critical for proper serializer caching.
7
+
8
+ ## v0.9.1 2014-10-29
2
9
 
3
10
  * To preserve the order and limit of ActiveRecord Relations, use of
4
11
  `ActiveRecord::Relation#find_in_batches` has been removed in favor of
5
12
  `Enumerable#each_slice` during batch caching.
6
13
 
7
- ## Version 0.9.0
14
+ ## v0.9.0 2014-10-09
8
15
 
9
16
  * `as_json` and `to_json` now take a block. The block will be applied to each
10
17
  model as it is being cached, allowing for serializers or presenters without
@@ -20,33 +27,33 @@
20
27
  memory savings (particularly when paired with passing a block through for
21
28
  custom serialization).
22
29
 
23
- ## Version 0.8.2
30
+ ## v0.8.2 2014-06-27
24
31
 
25
32
  * Really force the use of custom `fetch_multi` when using `NullStore`, not just
26
33
  when using `MemoryStore`.
27
34
 
28
- ## Version 0.8.1
35
+ ## v0.8.1 2014-06-07
29
36
 
30
37
  * Force use of custom implementation of `fetch_multi`. This makes using the
31
38
  default ActiveSupport stores (Memory) possible in versions of Rails between
32
39
  4.0 and 4.2.
33
40
  * Use array extract option support in custom fetch.
34
41
 
35
- ## Version 0.8.0
42
+ ## v0.8.0 2014-06-03
36
43
 
37
44
  * Support reconstructing collections of rooted objects and associations.
38
45
 
39
- ## Version 0.7.0
46
+ ## v0.7.0 2013-07-21
40
47
 
41
48
  * Alter the implementation of `fetch_multi` to return a hash rather than an
42
49
  array. This is consistent with the new Dalli implementation, and what should
43
50
  be new the Rails implementation.
44
51
 
45
- ## Version 0.6.0
52
+ ## v0.6.0 2013-07-13
46
53
 
47
54
  * Prevent frozen string errors by duplicating hash keys before fetching.
48
55
  * Use the native cache store's `fetch_multi` implementation if available.
49
56
 
50
- ## Version 0.5.0
57
+ ## v0.5.0 2013-07-12
51
58
 
52
59
  * Initial release!
@@ -11,28 +11,18 @@ module Perforated
11
11
  @strategy = strategy
12
12
  end
13
13
 
14
- def to_json(rooted: false, batch_size: 1000, &block)
15
- results = []
16
-
17
- enumerable.each_slice(batch_size) do |subset|
18
- keyed = key_mapped(subset)
19
-
20
- results << fetch_multi(keyed) do |key|
21
- if block_given?
22
- (yield keyed[key]).to_json
23
- else
24
- keyed[key].to_json
25
- end
26
- end.values
27
- end
14
+ def to_json(rooted: false, &block)
15
+ keyed = key_mapped(enumerable, &block)
16
+ results = fetch_multi(keyed) { |key| keyed[key].to_json }.values
28
17
 
29
- Perforated::Rebuilder.new(results).rebuild(rooted: rooted)
18
+ rebuild(results, rooted)
30
19
  end
31
20
 
32
21
  private
33
22
 
34
23
  def key_mapped(subset)
35
24
  subset.each_with_object({}) do |object, memo|
25
+ object = yield(object) if block_given?
36
26
  memo[strategy.expand_cache_key(object)] = object
37
27
  end
38
28
  end
@@ -42,5 +32,9 @@ module Perforated
42
32
 
43
33
  Perforated::Compatibility.fetch_multi(*keys, &block)
44
34
  end
35
+
36
+ def rebuild(results, rooted)
37
+ Perforated::Rebuilder.new(results).rebuild(rooted: rooted)
38
+ end
45
39
  end
46
40
  end
@@ -1,3 +1,3 @@
1
1
  module Perforated
2
- VERSION = '0.9.1'
2
+ VERSION = '0.10.0'
3
3
  end
@@ -55,6 +55,10 @@ describe Perforated::Cache do
55
55
  cache = Perforated::Cache.new([ruby])
56
56
 
57
57
  serializer = Struct.new(:lang) do
58
+ def cache_key
59
+ lang
60
+ end
61
+
58
62
  def to_json
59
63
  { name: lang.name.upcase }.to_json
60
64
  end
@@ -67,7 +71,6 @@ describe Perforated::Cache do
67
71
  expect(results).to eq(JSON.dump([{ name: 'RUBY' }]))
68
72
  end
69
73
 
70
-
71
74
  it 'reconstructs rooted objects into a single merged object' do
72
75
  lisps = Family.new('Lisp', ['scheme', 'clojure'])
73
76
  scripts = Family.new('Script', ['perl', 'ruby'])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: perforated
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Parker Selbert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-29 00:00:00.000000000 Z
11
+ date: 2014-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport