Allow blank values to be stored in reactive cache
Reactive caching concern was using .present? to determine if it got a valid value from the cache. This returns false for values such as false, [], {}. Change this check to !.nil? instead.
This commit is contained in:
parent
1d22968958
commit
0e7a9e46d2
4 changed files with 17 additions and 4 deletions
|
@ -76,7 +76,7 @@ module ReactiveCaching
|
|||
|
||||
begin
|
||||
data = Rails.cache.read(full_reactive_cache_key(*args))
|
||||
yield data if data.present?
|
||||
yield data unless data.nil?
|
||||
rescue InvalidateReactiveCache
|
||||
refresh_reactive_cache!(*args)
|
||||
nil
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Allow empty values such as [] to be stored in reactive cache
|
||||
merge_request: 25283
|
||||
author:
|
||||
type: fixed
|
|
@ -25,7 +25,7 @@ describe ReactiveCaching, :use_clean_rails_memory_store_caching do
|
|||
|
||||
def result
|
||||
with_reactive_cache do |data|
|
||||
data / 2
|
||||
data
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -64,7 +64,7 @@ describe ReactiveCaching, :use_clean_rails_memory_store_caching do
|
|||
stub_reactive_cache(instance, 4)
|
||||
end
|
||||
|
||||
it { is_expected.to eq(2) }
|
||||
it { is_expected.to eq(4) }
|
||||
|
||||
it 'does not enqueue a background worker' do
|
||||
expect(ReactiveCachingWorker).not_to receive(:perform_async)
|
||||
|
@ -94,6 +94,14 @@ describe ReactiveCaching, :use_clean_rails_memory_store_caching do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when cache contains non-nil but blank value' do
|
||||
before do
|
||||
stub_reactive_cache(instance, false)
|
||||
end
|
||||
|
||||
it { is_expected.to eq(false) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#clear_reactive_cache!' do
|
||||
|
|
|
@ -10,7 +10,7 @@ module ReactiveCachingHelpers
|
|||
def stub_reactive_cache(subject = nil, data = nil, *qualifiers)
|
||||
allow(ReactiveCachingWorker).to receive(:perform_async)
|
||||
allow(ReactiveCachingWorker).to receive(:perform_in)
|
||||
write_reactive_cache(subject, data, *qualifiers) if data
|
||||
write_reactive_cache(subject, data, *qualifiers) unless data.nil?
|
||||
end
|
||||
|
||||
def synchronous_reactive_cache(subject)
|
||||
|
|
Loading…
Reference in a new issue