summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrett Walker <brett@digitalmoksha.com>2017-11-30 22:23:07 +0000
committerStan Hu <stanhu@gmail.com>2017-11-30 22:23:07 +0000
commite292bf5b88843a6d03ca178d3b0c4f70ecff70a6 (patch)
treeb795355903deeb56ba3f8dd3e6dd289f6926e62b
parentbfac8b7abab72ad3a8c6eefeb5ef220da4b5aaa2 (diff)
downloadgitlab-ce-e292bf5b88843a6d03ca178d3b0c4f70ecff70a6.tar.gz
allow caching options to be specified for counting services
-rw-r--r--app/services/base_count_service.rb8
-rw-r--r--spec/services/base_count_service_spec.rb6
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..19873fe09a5 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) { 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
+ # super.merge({ expires_in: 5.minutes })
+ def cache_options
+ { raw: raw? }
+ end
end
diff --git a/spec/services/base_count_service_spec.rb b/spec/services/base_count_service_spec.rb
index 5ec8ed0976d..090b2dcdd43 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 default in options' do
+ expect(service.cache_options).to eq({ raw: false })
+ end
+ end
end