Feature #8026

Need Module#prepended_modules

Added by Marc-Andre Lafortune about 1 year ago. Updated 3 months ago.

Assignee:Yukihiro Matsumoto
Target version:current: 2.2.0


We should have a way to get the list of prepended modules of a class or module.

module Mixin

module Outer
  prepend Mixin

Mixin.prepended_modules   #=> []
Outer.prepended_modules   #=> [Mixin]

See also bug #8025.

prepended.pdf (99.4 KB) Marc-Andre Lafortune, 08/31/2013 08:29 AM

Related issues

Related to ruby-trunk - Bug #8841: Module#included_modules and prepended modules Open 08/31/2013


#1 Updated by Yukihiro Matsumoto 9 months ago

I am OK with the idea.


#2 Updated by Akinori MUSHA 9 months ago

What about adding Module#prepend?(other) also, which could be implemented in ruby as follows?

module Module
def prepend?(other)
ancestors.find { |mod|
break false if mod == self
mod == other

#3 Updated by Marc-Andre Lafortune 8 months ago

Slide added. I'm also proposing an optional flag to search only the receiver and not the ancestors.

I didn't put in prepend? but it should also be added. On the other hand, Array.prepend?(Enumerable) should return false, no?

#4 Updated by Yukihiro Matsumoto 8 months ago

  • Status changed from Open to Feedback

I basically accept the idea.

But according to the slide, the optional include_ancestors is true, but it does mean cherry-picking prepended modules from ancestor list. I cannot think of any use case of this behavior.


#5 Updated by Hiroshi SHIBATA 3 months ago

  • Target version changed from 2.1.0 to current: 2.2.0

Also available in: Atom PDF