Bug #8841
closedModule#included_modules and prepended modules
Description
The documentation for Module#included_modules currently states "Returns the list of modules included in +mod+."
This was never perfectly accurate, as the list also contains modules included in +mod+'s ancestors.
It now also includes prepended modules.
This is consistent with include?
that returns true for prepended modules, but not quite consistent with included
that does not get called for prepended modules.
Matz, could you confirm that current behavior is what you want?
If so, we should fix the documentation of include?
and included_modules
.
Updated by mame (Yusuke Endoh) almost 5 years ago
Summary:
-
Module#include?
andModule#included_modules
regard prepended modules asincluded
(not well documented) -
Module#included
is not called when the module is prepended
Is this right?
Updated by byroot (Jean Boussier) almost 5 years ago
Module#included is not called when the module is prepended
I think that's fine, because it calls Module#prepended
.
Module#include? and Module#included_modules regard prepended modules as included (not well documented)
That yes:
class Base
end
module A
end
module B
end
Base.prepend(A)
Base.include(B)
p Base.included_modules
outputs:
[A, B, Kernel]
Updated by matz (Yukihiro Matsumoto) almost 5 years ago
- Status changed from Open to Closed
This intentional.
Matz.
Updated by marcandre (Marc-Andre Lafortune) almost 5 years ago
Thank you.
I clarified the documentation to reflect this.