freelancing-god / after_commit forked from GUI/after_commit

A Ruby on Rails plugin to add an after_commit callback. This can be used to trigger things only after the entire transaction is complete.

This URL has Read+Write access

Mon Dec 14 18:58:18 -0800 2009
commit  6fe6463f3ec7ba25edb3eabd221e871dc8b9ccb0
tree    d23d24c25852ceb3a903916078d8c9f25d929d74
parent  0cb5a04394fb4b34a2bd0187c3476a0c623f0355
README.textile

after_commit

An ActiveRecord/Rails library to add before_commit, after_commit, before_rollback and after_rollback callbacks. These callbacks are focused on the transactions, instead of specific model actions. This is beneficial in situations where you are doing asynchronous processing and need committed objects.

Installation

gem install after_commit --source http://gemcutter.org

Usage

The following callbacks are provided:

  • before_commit
  • before_commit_on_create
  • before_commit_on_update
  • before_commit_on_destroy
  • after_commit
  • after_commit_on_create
  • after_commit_on_update
  • after_commit_on_destroy
  • before_rollback
  • after_rollback

You can use these just like you would any other callback:

class Article < ActiveRecord::Base
  after_commit :method_to_call_after_commit
  
  # ...
  
  private
  
  def method_to_call_after_commit
    # Do something knowing that the transaction is committed.
  end
end

Credits

This code first appeared in a blog post by Eli Miller, and was then included in Thinking Sphinx by Pat Allan, with modifications from Joost Hietbrink. The code was then put on GitHub as a plugin by Nick Muerdter, and many people forked and added their own contributions.

This version (maintained by Pat Allan) includes the following patches: