2012-08-25 39 views
1

可能重复:
How to get the name of the calling method?发现呼叫者方法在Ruby中

我有一个方法#foo。该方法可以从许多地方(范围)调用。我需要#foo找出它从哪里被调用。但不是堆栈跟踪(如#caller返回),我想要方法的纯名称(如#__callee__返回)。 Ruby中存在一种方法吗?

+1

不是内置方法,但这里有一个类似的问题:http://stackoverflow.com/questions/5100299/how-to-get-the-name-of-the-calling-method-in-ruby –

+0

是的,我想这不是那么糟糕。谢谢。 –

回答

0

您可以使用__method__。把它放在任何方法体中,它应该提供方法的名称。并且您始终可以使用.class.class.ancestors获取上下文。

+0

嗯,看起来'__method__'和'__callee__'(当前范围的名称)一样。我想要以前的范围。所以,如果'#bar'调用'#foo',我想要一个我可以从'#foo'调用的方法,它会返回''bar“ –