Skip to content

Commit 06d27aa

Browse files
committed
fix meta data not hydrating for first cache
This affects caching's first hit when used with Superglue's deferred and fragment. Fragments and deferred would be missing when it should be populated. This fixes it by moving the meta data hydration to always, and we also add a test for it.
1 parent 03e3cf3 commit 06d27aa

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

lib/props_template/extension_manager.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,13 @@ def handle_cache(options)
8686
result
8787
end
8888

89+
meta, raw_json = state.split("\n")
90+
next_deferred, next_fragments = Oj.load(meta)
91+
deferred.push(*next_deferred)
92+
fragments.push(*next_fragments)
93+
8994
if !recently_cached
90-
meta, raw_json = state.split("\n")
91-
next_deferred, next_fragments = Oj.load(meta)
9295
base.stream.push_json(raw_json)
93-
deferred.push(*next_deferred)
94-
fragments.push(*next_fragments)
9596
end
9697
else
9798
yield

spec/extensions/defer_extension_spec.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,18 @@
474474
json.deferred json.deferred!
475475
PROPS
476476

477-
render(props)
477+
json = render(props)
478+
479+
expect(json).to eql_json({
480+
outer: {
481+
inner: {
482+
greeting: {}
483+
}
484+
},
485+
deferred: [
486+
{url: "/some_url?props_at=outer.inner.greeting", path: "outer.inner.greeting", type: "auto"}
487+
]
488+
})
478489
json = render(props)
479490

480491
expect(json).to eql_json({

0 commit comments

Comments
 (0)