svenfuchs
8/30/2010 - 9:13 PM

gistfile1.rb

require 'rubygems'
require 'active_support/core_ext/kernel/singleton_class'

class Post
  def title; 'the title' end
end

class Tracker < Module
  def define_tracker(tracker, references, method)
    define_method(method) do
      tracker.send(:remove_method, method)
      references << [self, method]
      super
    end
  end
end

module Trackers
  class Post < Tracker; end
end

references = []
tracker = Trackers::Post.new
tracker.define_tracker(tracker, references, :title)

post = Post.new
post.singleton_class.send(:include, tracker)
post.title
post.title

p references