module CatchCache::Flush::ClassMethods

Public Instance Methods

cache_id(*args) click to toggle source

key_callbacks is hash that stores the a redis key with the proc value that evaluates to a unique id associated with that class. For example: `central_page_loan_plans` key defines the cache for the loading of loan plans index page.

An example of a redis key is “central_page_loan_plans_<uniq_id>”

Sample args for the cache_id are: cache_id :central_page_loan_plans, after_commit: { flush_cache!: -> { loan_plan.id } } cache_id :central_page_loan_plans, after_commit: :flush_all!

# File lib/catch_cache/flush.rb, line 58
def cache_id(*args)
  options = args.last if args.last.is_a?(Hash)

  value_args = options.values.first
  proc_value = value_args.is_a?(Hash) ? value_args[:flush_cache!] : value_args
  key_callbacks["#{args.first}__#{self.name.underscore}".to_sym] = proc_value
  register_callbacks_for(options) if options.present?
end

Private Instance Methods

register_callbacks_for(options) click to toggle source
# File lib/catch_cache/flush.rb, line 69
def register_callbacks_for(options)
  options.each do |callback, callable|
    case callable
    when Symbol
      send(callback, callable) if respond_to?(callback)
    else # It must be Proc or lambda
      callable = callable.keys.first
      send(callback, callable)
    end
  end
end