Skip to content

csmuc/after_commit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

after_commit
============

After_commit enables you to add after_commit methods to ActiveRecord models, which are called once the transaction has been committed to the database.

Typically one needs this in asynchronous processing where you pass on IDs of new records to another thread or post them to a message queue. Using the stock after_XXX
callbacks you cannot be sure that the other thread/process is already seeing the new record (at least if the database is ACID compliant).


Usage:
======

class Blog < ActiveRecord::Base
  include AfterCommit::ActiveRecord
  
  def after_commit_on_create
    # do something
  end

  def after_commit_on_update
    # do something
  end

  def after_commit_on_destroy
    # do something
  end
end


You have to include AfterCommit::ActiveRecord to add the new callbacks. They aren't automatically added to ActiveRecord::Base as tracking the committed
records takes a little overhead and I thought it's better to be able to manually select which models should get that feature.
  
You have to explicitely define the methods like in the example above, something like after_commit_on_create :do_what_ever doesn't work.

Credits:
========
I've taken existing code and made it threadsafe (well hopefully, so it should be safe when running config.threadsafe!). Original sources:

http://github.com/GUI/after_commit/tree/master
http://github.com/freelancing-god/thinking-sphinx

Releases

No releases published

Packages

No packages published

Languages