perforated 0.9.1 → 0.10.0

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