class Module
so, if Bootsnap were to do prepend, it might end up breaking RubyGems.
That’s because RubyGems does alias-method-chain for Kernel#require and such,
So, why does Bootsnap do alias-method-chain and not prepend? Glad you asked!
and prepended modules and alias-method-chain don’t play well together.
We need to do the alias-method-chain dance since Bootsnap does the same,
def append_features(constant)
def append_features(constant) Tapioca::Runtime::Trackers::Mixin.register( constant, self, Tapioca::Runtime::Trackers::Mixin::Type::Include, ) super end
def autoload(const_name, path)
def autoload(const_name, path) Tapioca::Runtime::Trackers::Autoload.register("#{self}::#{const_name}") autoload_without_tapioca(const_name, path) end
def extend_object(obj)
def extend_object(obj) Tapioca::Runtime::Trackers::Mixin.register( obj, self, Tapioca::Runtime::Trackers::Mixin::Type::Extend, ) if Module === obj super end
def prepend_features(constant)
def prepend_features(constant) Tapioca::Runtime::Trackers::Mixin.register( constant, self, Tapioca::Runtime::Trackers::Mixin::Type::Prepend, ) super end