ObjectRenderer doesn't crash when no objects to cache with Rails.cache.read_multi
This commit is contained in:
parent
5fea640e90
commit
cc752f241c
2 changed files with 21 additions and 4 deletions
|
@ -61,10 +61,16 @@ module Banzai
|
|||
end
|
||||
|
||||
cacheable_items, non_cacheable_items = items_collection.partition { |item| item.key?(:cache_key) }
|
||||
items_in_cache = Rails.cache.read_multi(*cacheable_items.map { |item| item[:cache_key] })
|
||||
items_not_in_cache = cacheable_items.reject do |item|
|
||||
item[:rendered] = items_in_cache[item[:cache_key]]
|
||||
items_in_cache.key?(item[:cache_key])
|
||||
|
||||
items_in_cache = []
|
||||
items_not_in_cache = []
|
||||
|
||||
unless cacheable_items.empty?
|
||||
items_in_cache = Rails.cache.read_multi(*cacheable_items.map { |item| item[:cache_key] })
|
||||
items_not_in_cache = cacheable_items.reject do |item|
|
||||
item[:rendered] = items_in_cache[item[:cache_key]]
|
||||
items_in_cache.key?(item[:cache_key])
|
||||
end
|
||||
end
|
||||
|
||||
(items_not_in_cache + non_cacheable_items).each do |item|
|
||||
|
|
|
@ -109,6 +109,17 @@ describe Banzai::ObjectRenderer do
|
|||
expect(docs[1]).to be_an_instance_of(Nokogiri::HTML::DocumentFragment)
|
||||
expect(docs[1].to_html).to eq('<p>bye</p>')
|
||||
end
|
||||
|
||||
it 'returns when no objects to render' do
|
||||
objects = []
|
||||
renderer = described_class.new(project, user, pipeline: :note)
|
||||
|
||||
expect(Banzai).to receive(:cache_collection_render).
|
||||
with([]).
|
||||
and_call_original
|
||||
|
||||
expect(renderer.render_attributes(objects, :note)).to eq([])
|
||||
end
|
||||
end
|
||||
|
||||
describe '#base_context' do
|
||||
|
|
Loading…
Reference in a new issue