Path: | README.textile |
Last Update: | Sun Feb 13 17:36:33 +0000 2011 |
h1. 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.
*Please note*: Rails 3 (and thus, ActiveRecord 3) "provides commit callbacks natively":github.com/rails/rails/commit/da840d13da865331297d5287391231b1ed39721b, so this library will remain just for versions 1.2.x to 2.x of ActiveRecord.
h2. Installation
<pre>gem install after_commit</pre>
h2. Usage
The following callbacks are provided:
You can use these just like you would any other callback:
<pre><code>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</code></pre>
h2. In Tests
Keep in mind that transactions are finicky at best in tests, and so there‘s a helper module to make @after_commit@ play nicely in your testing context. You‘ll need to add these two lines to your spec/test helper:
<pre>ActiveRecord::Base.send(:include, AfterCommit::AfterSavepoint) ActiveRecord::Base.include_after_savepoint_extensions</pre>
h2. Credits
This code first appeared in a blog post "by Eli Miller":elimiller.blogspot.com/2007/06/proper-cache-expiry-with-aftercommit.html, and was then included in "Thinking Sphinx":ts.freelancing-gods.com by "Pat Allan":freelancing-gods.com, with modifications from Joost Hietbrink. The code was then "put on GitHub as a plugin":github.com/GUI/after_commit by Nick Muerdter, and many people forked and added their own contributions.
This version (maintained by Pat Allan) includes the following patches: