discourse/app/models/concerns/stats_cacheable.rb

25 lines
545 B
Ruby

module StatsCacheable
extend ActiveSupport::Concern
module ClassMethods
def stats_cache_key
raise 'Stats cache key has not been set.'
end
def fetch_stats
raise 'Not implemented.'
end
# Could be configurable, multisite need to support it.
def recalculate_stats_interval
30 # minutes
end
def fetch_cached_stats
# The scheduled Stats job is responsible for generating and caching this.
stats = $redis.get(stats_cache_key)
stats ? JSON.parse(stats) : nil
end
end
end