diff options
author | digitalMoksha <bwalker@gitlab.com> | 2017-11-29 14:35:16 +0100 |
---|---|---|
committer | digitalMoksha <bwalker@gitlab.com> | 2017-11-30 16:06:50 +0100 |
commit | 147f98ce808ab3cef2e84ea9afb29bc8143a4f6e (patch) | |
tree | 10db6d5e96a54646777d358b0883c6076bc1fbe6 | |
parent | 5f129bdecd39955cc99b9609e292b0ced731e698 (diff) | |
download | gitlab-ce-147f98ce808ab3cef2e84ea9afb29bc8143a4f6e.tar.gz |
allow caching options to be specified for counting services
-rw-r--r-- | app/services/base_count_service.rb | 8 | ||||
-rw-r--r-- | spec/services/base_count_service_spec.rb | 6 |
2 files changed, 13 insertions, 1 deletions
diff --git a/app/services/base_count_service.rb b/app/services/base_count_service.rb index 99cc9a196e6..7ded81b98ca 100644 --- a/app/services/base_count_service.rb +++ b/app/services/base_count_service.rb @@ -9,7 +9,7 @@ class BaseCountService end def count - Rails.cache.fetch(cache_key, raw: raw?) { uncached_count }.to_i + Rails.cache.fetch(cache_key, cache_options({ raw: raw? })) { uncached_count }.to_i end def refresh_cache @@ -31,4 +31,10 @@ class BaseCountService def cache_key raise NotImplementedError, 'cache_key must be implemented and return a String' end + + # subclasses can override to add any specific options, such as + # options[:expires_in] = 5.minutes + def cache_options(options) + options + end end diff --git a/spec/services/base_count_service_spec.rb b/spec/services/base_count_service_spec.rb index 5ec8ed0976d..8cf0f6ce584 100644 --- a/spec/services/base_count_service_spec.rb +++ b/spec/services/base_count_service_spec.rb @@ -77,4 +77,10 @@ describe BaseCountService, :use_clean_rails_memory_store_caching do expect { service.cache_key }.to raise_error(NotImplementedError) end end + + describe '#cache_options' do + it 'returns the passed in options' do + expect(service.cache_options({ raw: true })).to eq({ raw: true }) + end + end end |