ruby-on-railscounter-cache

Setting up counter cache scale


My counter cache is locking the row under heavy load so I found wanelo/counter-cache gem which seems to be perfect for my problem but I can't set it up and it must be something really simple but I can't see it. https://github.com/wanelo/counter-cache I want it to use my already working delayed jobs and Redis.

In my config file

Counter::Cache.configure do |c|
  c.default_worker_adapter = here??? DelayedJob ??
  c.recalculation_delay    = 5.hours
  c.redis_pool             = Redis.new
  c.counting_data_store    = Counter::Cache::Redis
end

If I don't put the line c.default_worker_adapter when executing it says undefined method 'enqueue' for nil:NilClass

Any idea on what's going on? What should I put in the Worker Adapter? Nothing seems to work. Thank you for your time


Solution

  • default_worker_adapter is the name of the class that will be handling your updates. An example is given on the github page of the gem. For example if you're using sidekiq, you would make sidekiq worker class and name it whatever you want. On the github page, this class is called CounterWorker and you can copy it exactly as its given, though you can use whatever delayed job framework you want. From then on, any counter_cache_on definitions on your models will use that class to make the counter updates.