I want to be notified when certain things happen in some of my classes. I want to set this up in such a way that the implementation of my methods in those classes doesn't change.
I was thinking I'd have something like the following module:
module Notifications extend ActiveSupport::Concern module ClassMethods def notify_when(method) puts "the #{method} method was called!" # additional suitable notification code # now, run the method indicated by the `method` argument end end end Then I can mix it into my classes like so:
class Foo include Notifications # notify that we're running :bar, then run bar notify_when :bar def bar(...) # bar may have any arbitrary signature # ... end end My key desire is that I don't want to have to modify :bar to get notifications working correctly. Can this be done? If so, how would I write the notify_when implementation?
Also, I'm using Rails 3, so if there are ActiveSupport or other techniques I can use, please feel free to share. (I looked at ActiveSupport::Notifications, but that would require me to modify the bar method.)
It has come to my attention that I might want to use "the Module+super trick". I'm not sure what this is -- perhaps someone can enlighten me?