diff --git a/lib/gitlab/json_cache.rb b/lib/gitlab/json_cache.rb index e4bc437d78723251b74ed6970db59686a5057779..9a0b2b35112937b07c39374bed8d2c99817b347d 100644 --- a/lib/gitlab/json_cache.rb +++ b/lib/gitlab/json_cache.rb @@ -58,7 +58,7 @@ module Gitlab private def parse_value(raw, klass) - value = ActiveSupport::JSON.decode(raw) + value = ActiveSupport::JSON.decode(raw.to_s) case value when Hash then parse_entry(value, klass) diff --git a/spec/lib/gitlab/json_cache_spec.rb b/spec/lib/gitlab/json_cache_spec.rb index b82c09af30689052b0d365f5f5a735981fa88a5e..c6a6042c65cfecf773edaf46bd930cc6658fb08b 100644 --- a/spec/lib/gitlab/json_cache_spec.rb +++ b/spec/lib/gitlab/json_cache_spec.rb @@ -106,6 +106,16 @@ describe Gitlab::JsonCache do expect(cache.read(key)).to be_nil end + context 'when the cached value is a boolean' do + it 'parses the cached value' do + allow(backend).to receive(:read) + .with(expanded_key) + .and_return(true) + + expect(cache.read(key, BroadcastMessage)).to eq(true) + end + end + context 'when the cached value is a hash' do it 'parses the cached value' do allow(backend).to receive(:read)