metaprogramming/bound_kernel_method.rb
tests/_examples/metaprogramming/bound_kernel_method.rb in the metorex repository.
class Ledger
def record(entry, amount = 0) = [entry, amount]
def method(*) = "a method of its own"
end
ledger = Ledger.new
bound = Kernel.instance_method(:method).bind(ledger)
recorded = bound.call(:record)
p recorded.class
p recorded.arity
p recorded.call("rent", 5)
p ledger.method(:record)
p Kernel.instance_method(:method).bind_call(ledger, :record).name
Output:
Method
-2
["rent", 5]
"a method of its own"
:record