方法中的模块名称

时间:2014-04-17 10:49:39

标签: ruby metaprogramming

我有简单的代码

module Foo
  def foo
    p self
    #p 'Foo' -> bad decision for me
  end
end

class Bar
  include Foo
end

Bar.new.foo #=> #<Bar:0x00000002f0faf8> 

但我需要这样的东西

Bar.new.foo #=> Foo

我需要调用此方法的模块的名称。 那么,有哪些方法可以找到模块的名称

1 个答案:

答案 0 :(得分:8)

执行以下操作:

module Foo
  def foo
    method(__method__).owner
  end
end

class Bar
  include Foo
end

Bar.new.foo # => Foo