少し "Deprecate-It" libを書きたいと思い、 "method_added"コールバックをたくさん使いました。 しかし、私は、このコールバックがモジュールを組み込むときにトリガされないことに気付きました。Rubyのmethod_addedコールバックはモジュールを含むトリガーではありません
何らかのコールバックまたは回避策があり、クラス「Foobar」に自分自身にsomewhingが含まれていることが通知されるようにしますか?
小さなデモが実証する:
InstanceMethod: 'visible' added to 'Foobar'
invisible: true
visible: true
wont_exist: false
追加情報:結果だ
# Including Moduls won't trigger method_added callback
module InvisibleMethod
def invisible
"You won't get a callback from me"
end
end
class Foobar
def self.method_added(m)
puts "InstanceMethod: '#{m}' added to '#{self}'"
end
def visible
"You will get a callback from me"
end
include InvisibleMethod
end
[:invisible, :visible, :wont_exist].each do |meth|
puts "#{meth}: #{Foobar.public_method_defined? meth}"
end
を私は本当にmethod_addedのようなフックを使用する必要があります。
ActiveModelは、匿名モジュールを使用して実行時にクラスにpublic_instance_methodsを追加しています。
残念なことに私は良い答えがあるとは思わないが、これは動作するいくつかのハックの方向にあなたを指すことができます.. http:// stackoverflow。com/questions/4191214 /コールバック - for-classes-defined-inside-a-module – David