module CustomFragmentCache::Logic

Public Class Methods

cache_key(fragment_name, record) click to toggle source
# File lib/custom_fragment_cache/logic.rb, line 36
def cache_key(fragment_name, record)
  "#{prefix}:#{record.class.name.downcase}-#{record.id}:#{fragment_name}"
end
prefix() click to toggle source
# File lib/custom_fragment_cache/logic.rb, line 32
def prefix
  "custom_fragment_cache"
end

Public Instance Methods

expire_cache?(fragment_cache, record) click to toggle source
# File lib/custom_fragment_cache/logic.rb, line 5
def expire_cache?(fragment_cache, record)
  if fragment_cache.fields_method == :safe
    unsafe_dirty_fields = record.changed - fragment_cache.fields
    return true if unsafe_dirty_fields.present?
  elsif fragment_cache.fields_method == :trigger
    trigger_dirty_fields = record.changed & fragment_cache.fields
    return true if trigger_dirty_fields.present?
  end
end
expire_fragment(key) click to toggle source
# File lib/custom_fragment_cache/logic.rb, line 15
def expire_fragment(key)
  action_controller = ActionController::Base.new

  if action_controller.send(:cache_configured?)
    action_controller.instrument_fragment_cache :expire_fragment, key do
      if key.is_a?(Regexp)
        action_controller.cache_store.delete_matched(key)
      elsif action_controller.cache_store.is_a?(ActiveSupport::Cache::RedisStore)
        # TODO find better solution
        action_controller.cache_store.delete_matched("*#{key}*")
      else
        action_controller.cache_store.delete(key)
      end
    end
  end
end

Private Instance Methods

cache_key(fragment_name, record) click to toggle source
# File lib/custom_fragment_cache/logic.rb, line 36
def cache_key(fragment_name, record)
  "#{prefix}:#{record.class.name.downcase}-#{record.id}:#{fragment_name}"
end
prefix() click to toggle source
# File lib/custom_fragment_cache/logic.rb, line 32
def prefix
  "custom_fragment_cache"
end