Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
e4e617fb2cf8
Commit
e4e617fb
authored
Oct 19, 2017
by
Kamil Trzcinski
Browse files
Prevent ApplicationSetting to cache nil value
parent
e89d68598551
Changes
3
Hide whitespace changes
Inline
Side-by-side
app/models/application_setting.rb
View file @
e4e617fb
...
...
@@ -203,7 +203,10 @@
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)
...
...
changelogs/unreleased/fix-application-setting-nil-cache.yml
0 → 100644
View file @
e4e617fb
---
title
:
Fix application setting to cache nil object
merge_request
:
author
:
type
:
fixed
spec/models/application_setting_spec.rb
View file @
e4e617fb
...
...
@@ -220,6 +220,21 @@
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
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment