Ваше мнение о том, как это должно работать, кажется правильным, но я не уверен, почему вы думаете, что это не работает таким образом.
В Ruby 1.8.7:
irb> a = Class.new.methods - Object.new.methods
=> [... 36 element array ...]
irb> b = Class.methods - Object.new.methods
=> [... 37 element array ...]
irb> b - a
=> ["nesting"]
Обычный экземпляр класса (Class.new) имеет 36 методов экземпляра.Если я посмотрю на сам класс, который также является обычным экземпляром класса, он имеет те же 36 методов экземпляра, плюс 1 дополнительный метод класса (вложение), который существует только потому, что он унаследован от своего модуля суперкласса.
Обратите внимание, что добавление метода экземпляра к классу автоматически добавляет его как метод класса, но добавление класса в метакласс класса не будет.
irb> class Class ; def everywhere ; true ; end ; end
irb> class << Class ; def only_singleton ; true ; end ; end
irb> Class.everywhere
=> true
irb> Class.new.everywhere
=> true
irb> Class.only_singleton
=> true
irb> Class.new.only_singleton
NoMethodError: undefined method 'only_in_singleton' for #<Class:0x4800ac8>