append_featuresとextend_object

Module#append_featuresはModule#includeの本体で、Module#extend_objectはObject#extendの本体です。

includeを使う代わりにappend_featuresでモジュールをインクルードできます。普通はこんなことしませんが。

module M
  def foo() "foo" end
end

class C
  # include M
  M.send(:append_features, self)
end

extendを使う代わりにextend_objectで特異クラスにモジュールをインクルードできます。普通はこんなことしませんが。

obj = Object.new
# obj.extend(M)
M.send(:extend_object, obj)