module Arturo::FeatureCaching
To be extended by Arturo::Feature
if you want to enable in-memory caching. NB: Arturo’s feature caching only works when using Arturo::Feature.to_feature
or when using the helper methods in Arturo
and Arturo::FeatureAvailability
. NB: if you have multiple application servers, you almost certainly want to clear this cache after each request:
class ApplicationController < ActionController::Base after_filter { Arturo::Feature.clear_feature_cache } end
Alternatively, you could redefine Arturo::Feature.feature_cache to use a shared cache like Memcached.
Public Class Methods
extended(base)
click to toggle source
# File lib/arturo/feature_caching.rb, line 36 def self.extended(base) class << base prepend PrependMethods attr_accessor :cache_ttl, :feature_cache, :feature_caching_strategy attr_writer :extend_cache_on_failure end base.send(:after_save) do |f| f.class.feature_caching_strategy.expire(f.class.feature_cache, f.symbol.to_sym) if f.class.caches_features? end base.cache_ttl = 0 base.extend_cache_on_failure = false base.feature_cache = Arturo::FeatureCaching::Cache.new base.feature_caching_strategy = AllStrategy end
Public Instance Methods
caches_features?()
click to toggle source
# File lib/arturo/feature_caching.rb, line 55 def caches_features? self.cache_ttl.to_i > 0 end
extend_cache_on_failure?()
click to toggle source
# File lib/arturo/feature_caching.rb, line 51 def extend_cache_on_failure? !!@extend_cache_on_failure end
warm_cache!()
click to toggle source
# File lib/arturo/feature_caching.rb, line 59 def warm_cache! to_feature(:fake_feature_to_force_cache_warming) end