Issue #10355 has been updated by Satoshi TAGOMORI.


特定メソッドの出力のフィルタをprependによって実現したい場合、親クラスで既にprependされていても子クラスでメソッド定義が上書きされればprependが実際には効かないことになります。
このような状態が起きてないかどうかを調べる必要がある(起きていればprependしなおす)、というケースで Module#prepended? 相当の機能が必要となります。

フレームワークなどの記述において、DI等で挿入されたオブジェクトの機能を調べてコントロールする用途などで必要です。


----------------------------------------
Feature #10355: Feature request: Module#prepended?(mod)
https://bugs.ruby-lang.org/issues/10355#change-49334

* Author: Satoshi TAGOMORI
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
----------------------------------------
あるモジュール X に対してモジュール P1 がprependされているかどうかを調べる方法があると嬉しく思います。
Module#include? を使うと継承関係に含まれているかどうかはわかりますが、それが対象モジュールに対してprependされたものかは分かりません。

<pre>
module P1; end
module P2; end

class X
  prepend P1
end
class Y< X
  prepend P2
end

X.include?(P1) #=> true
Y.include?(P2) #=> true
Y.include?(P1) #=> true

# I want
X.prepended?(P1) #=> true
Y.prepended?(P2) #=> true
Y.prepended?(P1) #=> false
</pre>



-- 
https://bugs.ruby-lang.org/