In Ruby, one can use either
__callee__
or
__method__
to find the name of the currently executing method.<
To paraphrase the documentation, __callee__ is the name of the method that the caller called, whereas __method__ is the name of the method at definition. The following example illustrates the difference:
class Foo
def foo
puts __callee__
puts __method__
end
alias_method :bar, :foo
end
If I call Foo.new.foo then the output is
foo
foo
but if I call Foo.new.bar then the output is
bar
foo
__method__ returns :foo in both cases because that is the name of the method as defined (i.e. the class has def foo), but in the second example the name of the method the caller is calling is bar and so __callee__ returns that.