lib/determinator.rb in determinator-2.0.0 vs lib/determinator.rb in determinator-2.1.0
- old
+ new
@@ -5,18 +5,20 @@
require 'determinator/cache/fetch_wrapper'
require 'determinator/serializers/json'
module Determinator
class << self
+ attr_reader :feature_cache, :retrieval
# @param :retrieval [Determinator::Retrieve::Routemaster] A retrieval instance for Features
# @param :errors [#call, nil] a proc, accepting an error, which will be called with any errors which occur while determinating
# @param :missing_feature [#call, nil] a proc, accepting a feature name, which will be called any time a feature is requested but isn't available
# @param :feature_cache [#call, nil] a caching proc, accepting a feature name, which will return the named feature or yield (and store) if not available
def configure(retrieval:, errors: nil, missing_feature: nil, feature_cache: nil)
self.on_error(&errors) if errors
self.on_missing_feature(&missing_feature) if missing_feature
@feature_cache = feature_cache if feature_cache.respond_to?(:call)
+ @retrieval = retrieval
@instance = Control.new(retrieval: retrieval)
end
# Returns the currently configured Determinator::Control instance
#
@@ -86,8 +88,12 @@
# @api private
def with_retrieval_cache(name)
return yield unless @feature_cache.respond_to?(:call)
@feature_cache.call(name) { yield }
+ end
+
+ def invalidate_cache(name)
+ @feature_cache.expire(name)
end
end
end