Module has a built in callback for when it is included in a class.
self.included(klass) is called on the module directly after a class declaration which includes it.
ancestors but not a direct way to look at descendant classes. However you can use
ObjectSpace to iterate over classes, and use the
< comparison or
include? to see if a class has your module as an ancestor.