Q: How do you tell if a given class is an ordinary class or a singleton class?
A: Test whether the class is the first element in its own ancestor list.
self == ancestors.first # => true
class << Object.new
self == ancestors.first # => false
As you can see, ordinary classes have themselves as first ancestor. Singleton classes do not have themselves as an ancestor.