我试图弄清楚如何获取在我的基于插件的应用程序中调用模块函数的类的名称。
caller
似乎给了我一个文件/行号,这是可行的,但似乎有点hacky而不是惯用语。
示例代码:
module AwesomeModule
def self.get_caller
puts #some unknown code here
end
end
class AwesomeClass
def initialize
AwesomeModule::get_caller
end
end
a = AwesomeClass.new # ideal return => "AwesomeClass"
答案 0 :(得分:2)
您通常通过包含ruby模块来使用它们。试试这个:
module AwesomeModule
def get_caller
self.class
end
end
class AwesomeClass
include AwesomeModule
def initialize
get_caller
end
end
a = AwesomeClass.new # "AwesomeClass"
另请注意,在get_caller
模块本身上调用AwesomeModule
问题时,问题会进一步复杂化。