Sha256: 4917f96fff64193d560f07bcbf85e8e6ab744e84cf05435c1baf1e9ac2945c84

Contents?: true

Size: 820 Bytes

Versions: 2

Compression:

Stored size: 820 Bytes

Contents

class Kredis::Types::Proxy
  require_relative "proxy/failsafe"
  include Failsafe

  attr_accessor :redis, :key

  def initialize(redis, key, **options)
    @redis, @key = redis, key
    options.each { |key, value| send("#{key}=", value) }
  end

  def multi(...)
    redis.multi(...)
  end

  def method_missing(method, *args, **kwargs)
    failsafe do
      Kredis.logger&.debug log_message(method, *args, **kwargs)
      redis.public_send method, key, *args, **kwargs
    end
  end

  private
    def log_message(method, *args, **kwargs)
      args      = args.flatten.reject(&:blank?).presence
      kwargs    = kwargs.reject { |_k, v| v.blank? }.presence
      type_name = self.class.name.split("::").last

      "[Kredis #{type_name}] #{method.upcase} #{key} #{args&.inspect} #{kwargs&.inspect}".chomp
    end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kredis-0.2.3 lib/kredis/types/proxy.rb
kredis-0.2.2 lib/kredis/types/proxy.rb