Sha256: 33527ac1964d73f624fe60dd2cb9fe5fc13afd178f0a90bc3972ef677071980c

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 KB

Contents

ar-async-counter-cache
----------------------

This gem allows you to update ActiveRecord counter cache columns
asynchronously. You may want to do this in situations where you want really
speedy inserts and have models that "belong_to" many different parents.

You use it like such:

    class User < ActiveRecord::Base
      has_many :comments
      has_many :posts
    end
    
    class Post < ActiveRecord::Base
      belongs_to :user, :async_counter_cache => true
      has_many :comments
    end
    
    class Comment < ActiveRecord::Base
      belongs_to :user, :async_counter_cache => true
      belongs_to :post, :async_counter_cache => "count_of_comments"
    end

Notice, you may specify the name of the counter cache column just as you can
with the normal belongs_to :counter_cache option. You also may not use both
the :async_counter_cache and :counter_cache options in the same belongs_to
call.

All you should need to do is require this gem in your project that uses
ActiveRecord and you should be good to go;

  e.g. In your Gemfile:

    gem 'ar-async-counter-cache', '0.0.1'

  and then in RAILS_ROOT/config/environment.rb somewhere:
    
    require 'ar-async-counter-cache'

This gem has built-in support for Resque (http://github.com/defunkt/resque).
Al you need is resque in your loadpath:

  e.g. In your Gemfile:

    gem 'resque', '1.9.4'

By default, the Resque job is placed on the :default queue:

    @queue = :default

However, you can change this:

  in RAILS_ROOT/config/environment.rb somewhere:

    ArAsyncCounterCache.resque_job_queue = :low_priority

If you don't want to use Resque, you must define one instance method for your
models using ar-async-counter-cache:

  e.g.:

    Comment#async_increment_counters

That method should pass a message onto a queue for a background processor to
handle later. That background processor should call:

    Comment#update_async_counters(:increment)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ar-async-counter-cache-0.0.2 README