From: tagomoris@... Date: 2014-10-10T04:15:33+00:00 Subject: [ruby-dev:48612] [ruby-trunk - Feature #10355] Feature request: Module#prepended?(mod) 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されたものかは分かりません。
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-- https://bugs.ruby-lang.org/