Skip to content
forked from pat/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.

License

Notifications You must be signed in to change notification settings

kir/after_commit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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, so this library will remain just for versions 1.2.x to 2.x of ActiveRecord.

Installation

gem install after_commit

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

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:

ActiveRecord::Base.send(:include, AfterCommit::AfterSavepoint)
ActiveRecord::Base.include_after_savepoint_extensions

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:

About

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.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%