== Module#class_extend require 'facets/module/class_extend' Module using class_extend mix = Module.new do def i ; end class_extend do def n ; 42 ; end def s ; self ; end end end Extends module mix.n.assert == 42 mix.s.assert == mix Has expected methods mix.instance_methods.map{ |m| m.to_s }.assert == ['i'] transfers class methods to including class mod = Module.new do include mix end mod.n.assert == 42 mod.s.assert == mod Doesn't overwrite instance methods c = Class.new do include mix def n ; 11 ; end end c.new.n.assert == 11 Is overridable via including module mod = Module.new do include mix class_extend do def n ; super + 1 ; end end end mod.n.assert == 43 # notice the difference! mod.s.assert == mod Transfers class methods thru multiple levels of include alt = Module.new do include mix class_extend do def n ; super + 1 ; end end end mod = Module.new do include alt end mod.n.assert == 43 mod.s.assert == mod