On May 22, 2009, at 3:40 PM, rlf wrote: > I'm trying to learn the ruby way of doing things, and ran across some > code that I'm finding hard to understand. It seems to be sending > extend and include messages of inner modules to the class def itself. > send :extend, ClassMethods > [...] > send :include, InstanceMethods These could be more simply written as: extend ClassMethods include InstanceMethods > Isn't the receiver of the send message the Class itself? If not, who > is the receiver? Yes, the class 'C' is the receiver. > If it is, what does this technique offer compared to just declaring > the class and instance methods in the first place? Perhaps because the modules are going to be used elsewhere? If you declare the methods directly as class and instance methods it is awkward to incorporate them into other classes or modules via extend and include.