module Concurrent::ReInclude
def extended(base)
def extended(base) (@re_include_to_bases ||= []) << [:extend, base] super(base) end
def include(*modules)
def include(*modules) result = super(*modules) modules.reverse.each do |module_being_included| (@re_include_to_bases ||= []).each do |method, mod| mod.send method, module_being_included end end result end
def included(base)
def included(base) (@re_include_to_bases ||= []) << [:include, base] super(base) end