module Redlics::Tracker

Tracker class

Constants

CONTEXT

Context constant for given class.

Public Instance Methods

track(*args, &block) click to toggle source

Track for a given event and object id with options.

@param *args [Array] list of arguments for track @return [Array] list of tracked granularities

# File lib/redlics/tracker.rb, line 15
def track(*args, &block)
  return track_with_block(&block) if block_given?
  return track_with_hash(args.first) if args.first.is_a?(Hash)
  track_with_args(*args)
end

Private Instance Methods

track_with_args(*args) click to toggle source

Track with hash.

@param *args [Array] list of arguments for track @return [Array] list of tracked granularities

# File lib/redlics/tracker.rb, line 52
def track_with_args(*args)
  options = args.last.instance_of?(Hash) ? args.pop : {}
  options.merge!({
    event: args[0],
    id: args[1]
  })
  track_with_hash(options)
end
track_with_block() { |options = open_struct| ... } click to toggle source

Track with hash.

@param [&Block] a block with configuration options @return [Array] list of tracked granularities

# File lib/redlics/tracker.rb, line 43
def track_with_block
  yield options = OpenStruct.new
  track_with_hash(options.to_h)
end
track_with_hash(options) click to toggle source

Track with hash.

@param options [Hash] configuration options @return [Array] list of tracked granularities

# File lib/redlics/tracker.rb, line 27
def track_with_hash(options)
  Granularity.validate(CONTEXT, options[:granularity]).each do |granularity|
    key = Key.name(CONTEXT, options[:event], granularity, options[:past])
    Redlics.redis do |conn|
      conn.pipelined do |redis|
        redis.setbit(key, options[:id].to_i, 1)
        redis.expire(key, (options[:expiration_for] && options[:expiration_for][granularity] || Redlics.config.tracker_expirations[granularity]).to_i)
      end
    end
  end
end