Ann: ArEvents


I needed to be able to add actions to be taken during the lifecycle of
ActiveRecord object, but needed to configure it dynamically.
Observers were not flexible enough and I ended up developing ArEvents,
which lets you easily attach and detach event listeners, the events
correspond to the active record callbacks.

If you have an existing model, just include the ArEvents module:

ArEventComment.send(:include, ArEvents)

and you can then add event listeners:

ArEventComment.add_ar_event_listener(:before_validation, ArEventCommentListener)

An event listener is simply a class with a class method named trigger
that takes 2 arguments: the event fired and the object fireing the

  class ArEventCommentListener
    def self.trigger(evt, obj)
      puts "event #{evt} triggered by object #{obj.inspect}"

I'm not yet using it in production, but tests pass as expected.

You can find the code at

All comments and suggestions are of course welcome!


Just added the possibility to ignore events permanently:

        #some code

or with a block of code:

        ArEventComment.ignore_ar_events(:before_create) do
                #some code

The code is on github: