methods/callee_and_method.rb
tests/_examples/methods/callee_and_method.rb in the metorex repository.
class Reporter
def plain
[__callee__, __method__]
end
alias_method :aliased, :plain
def in_block
(1..2).map { __callee__ }
end
define_method(:defined) do
__callee__
end
def from_send
send "__callee__"
end
@@during_body = __callee__
def during_body
@@during_body
end
end
reporter = Reporter.new
puts reporter.plain.inspect
puts reporter.aliased.inspect
puts reporter.in_block.inspect
puts reporter.defined.inspect
puts reporter.from_send.inspect
puts reporter.during_body.inspect
puts __callee__.inspect
puts __method__.inspect
outside = proc { __callee__ }
puts outside.call.inspect
class Super
def greet
"super"
end
end
class Sub < Super
def greet
super + "-sub"
end
alias_method :hello, :greet
end
puts Sub.new.hello
Output:
[:plain, :plain]
[:aliased, :plain]
[:in_block, :in_block]
:defined
:from_send
nil
nil
nil
nil
super-sub