在 Ruby 中获取呼叫 class 的名称
Getting the name of the calling class in Ruby
我想弄清楚如何在我的基于插件的应用程序中获取调用模块函数的 class 的名称。
caller
似乎给了我一个 file/line 数字,这是 可行的 ,但似乎有点 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"
您通常通过包含 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
模块本身上调用的,这使问题进一步复杂化。
我想弄清楚如何在我的基于插件的应用程序中获取调用模块函数的 class 的名称。
caller
似乎给了我一个 file/line 数字,这是 可行的 ,但似乎有点 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"
您通常通过包含 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
模块本身上调用的,这使问题进一步复杂化。