It is known that in Ruby, class methods get inherited: class P def self.mm; puts 'abc' end end class Q < P; end Q.mm # works However, it comes as a surprise to me that it does not work with mixins: module M def self.mm; puts 'mixin' end end class N; include M end M.mm # works N.mm # does not work! I know that #extend method can do this: module X; def mm; puts 'extender' end end Y = Class.new.exten