class Capacitor::CounterCache

Public: The public interface to incrementing and decrementing the counter cache

klass - ActiveRecord class id - record id column - counter column symbol

Attributes

classname[RW]
column[RW]
id[RW]

Public Class Methods

new(klass, id, column) click to toggle source
# File lib/capacitor/counter_cache.rb, line 8
def initialize(klass, id, column)
  @classname = klass.to_s
  @id = id.to_s
  @column = column
end

Public Instance Methods

decrement() click to toggle source

Public: decrement `column` by 1

Returns: nothing

# File lib/capacitor/counter_cache.rb, line 24
def decrement
  enqueue_count_change -1
end
increment() click to toggle source

Public: increment `column` by 1

Returns: nothing

# File lib/capacitor/counter_cache.rb, line 17
def increment
  enqueue_count_change 1
end

Private Instance Methods

counter_id() click to toggle source
# File lib/capacitor/counter_cache.rb, line 50
def counter_id
  [classname, id, column.to_s].join(':')
end
enqueue_count_change(delta) click to toggle source
# File lib/capacitor/counter_cache.rb, line 40
def enqueue_count_change(delta)
  responses = redis.pipelined do
    redis.hincrby "incoming_hash", counter_id, delta
    redis.lpush "incoming_signal_list", counter_id
    redis.get "log_level"
  end
  Capacitor.log_level= responses.last
  logger.debug "enqueue_count_change #{counter_id} #{delta}"
end
logger() click to toggle source
# File lib/capacitor/counter_cache.rb, line 36
def logger
  Capacitor.logger
end
redis() click to toggle source
# File lib/capacitor/counter_cache.rb, line 32
def redis
  Capacitor.redis
end