ActiveSupport::Notifcations already support all these cases. You only need to use it correctly. See http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html