>
> If Animal is the superclass of Dog, then why doesn't Animal's greet()
> method execute?
>

Because imported modules go right above the current class in the ancestors
chain, but it does not mean that the imported module becomes a class:

>> Dog.superclass
 => Animal
>> Dog.ancestors
 => [Dog, Stuff, Animal, Object, Kernel, BasicObject]
>> Stuff.class
 => Module

The goal is something like this:

class A; end
class B; end
class C < A; end
C.superclass = B    # this is wrong here!

This last line doesn't work, of course, but my question was how
to achieve something like that what it suggests...