Read about our upcoming Code of Conduct on this issue

Commit 8783c134 authored by Kamil Trzcinski's avatar Kamil Trzcinski Committed by Winnie Hellmann
Browse files

Prevent ApplicationSetting to cache nil value

parent e89d68598551
......@@ -203,7 +203,10 @@ def self.current
ensure_cache_setup
Rails.cache.fetch(CACHE_KEY) do
ApplicationSetting.last
ApplicationSetting.last.tap do |settings|
# do not cache nils
raise 'missing settings' unless settings
end
end
rescue
# Fall back to an uncached value if there are any problems (e.g. redis down)
......
---
title: Fix application setting to cache nil object
merge_request:
author:
type: fixed
......@@ -220,6 +220,21 @@ def expect_invalid
expect(described_class.current).to eq(:last)
end
end
context 'when an ApplicationSetting is not yet present' do
it 'does not cache nil object' do
# when missing settings a nil object is returned, but not cached
allow(described_class).to receive(:last).and_return(nil).twice
expect(described_class.current).to be_nil
# when the settings are set the method returns a valid object
allow(described_class).to receive(:last).and_return(:last)
expect(described_class.current).to eq(:last)
# subsequent calls get everything from cache
expect(described_class.current).to eq(:last)
end
end
end
context 'restrict creating duplicates' do
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment