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