So is Class an instance of itself? I donÂ´t understand the logic behind
Well then you’ll love this:
#=> [Object, Kernel]
So Object and Module are instances of a subclass of themselves, and
inherits from Kernel, which is a Module, a subclass of Object. Fun!
The way this actually works is that a Ruby interpreter will implement
using low-level building blocks, then implement Module and Class on top
that, then perform a bunch of voodoo to make Object and Module look
first-class Class instances.
Some quick rules on Ruby’s type system that I find helpful:
Object is the base type. Everything is an Object.
Module is a type of Object that stores Methods. A module contains a
of methods, and possibly pointers to one or more ‘parent’ modules mixed
Class is a type of Module that not only stores Methods but can also
new Objects that have the class’s methods. Additionally, classes have
inheritance semantics in that subclassing is more restrictive than
and class methods are inherited when subclassing.
Kernel is an instance of Module that stores the core methods common
all Objects. It is mixed into Object after Module is created, thereby
the core methods to all extant objects in the Ruby runtime.