module AnyCache::Delegation::ClassMethods

@api private @since 0.3.0

Public Instance Methods

def_loggable_delegator(receiver, delegat) click to toggle source

@param receiver [Symbol, String] @param delegat [Symbol, String] @return [void]

@api private @since 0.3.0

# File lib/any_cache/delegation.rb, line 36
def def_loggable_delegator(receiver, delegat)
  # TODO: move to Instrumentation API
  define_method(delegat) do |*args, **opts, &block|
    send(receiver).send(delegat, *args, **opts, &block).tap do
      shared_config[:logger].tap do |logger|
        AnyCache::Logging::Activity.log(
          self, logger, activity: delegat, message:
            "performed <#{delegat}> operation with " \
            "attributes: #{args.inspect} and options: #{opts.inspect}."
        ) if logger
      end
    end
  end
end
def_loggable_delegators(receiver, *delegators) click to toggle source

@param receiver [Symbol, String] @param delegators [Array<Symbol, String>] @return [void]

@api private @since 0.3.0

# File lib/any_cache/delegation.rb, line 26
def def_loggable_delegators(receiver, *delegators)
  delegators.each { |delegat| def_loggable_delegator(receiver, delegat) }
end