module Cachengue::Namespace

Public Instance Methods

cachengue(options = {}) click to toggle source
# File lib/cachengue/namespace.rb, line 5
def cachengue(options = {})
  if block_given?
    # Proc.new is the block passed as argument.
    Caching.fetch(self, nil, [], options, &Proc.new)
  else
    Proxy.new(self, options)
  end
end
cachengue_clear() click to toggle source
# File lib/cachengue/namespace.rb, line 40
def cachengue_clear
  __cachengue_namespaces__.inject({}) do |results, (namespace, strategy)|
    results.merge!(
      namespace => Caching.clear(namespace, strategy)
    )
  end
end
cachengue_clear_by(options) click to toggle source
# File lib/cachengue/namespace.rb, line 34
def cachengue_clear_by(options)
  Caching.clear_by(
    options.reverse_merge(namespace: self)
  )
end
cachengue_namespace(namespace, strategy: :all) click to toggle source
# File lib/cachengue/namespace.rb, line 30
def cachengue_namespace(namespace, strategy: :all)
  __cachengue_namespaces__[namespace.to_sym] = strategy
end
module_cachengue(method_name, options = {}, &block) click to toggle source
# File lib/cachengue/namespace.rb, line 14
def module_cachengue(method_name, options = {}, &block)
  singleton_class.instance_eval do
    define_method(method_name) do |*args|
      Caching.fetch_one(self, method_name, args, options, &block)
    end
  end

  return unless options[:multi]

  singleton_class.instance_eval do
    define_method("#{method_name}_multi") do |*args|
      Caching.fetch_multi(self, method_name, args, options, &block)
    end
  end
end

Private Instance Methods

__cachengue_namespaces__() click to toggle source
# File lib/cachengue/namespace.rb, line 50
def __cachengue_namespaces__
  if class_variable_defined?(:@@cachengue_namespaces)
    class_variable_set(
      :@@cachengue_namespaces,
      class_variable_get(:@@cachengue_namespaces)
    )
  else
    class_variable_set(
      :@@cachengue_namespaces,
      to_s.to_sym => :all
    )
  end
end