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