metaprogramming/kernel_method_objects_no_parens.rb
tests/_examples/metaprogramming/kernel_method_objects_no_parens.rb in the metorex repository.
# The Kernel methods every object answers can be taken as Method objects in
# a module body, as the debug gem takes `singleton_class` and `class`.
module Ledger
SINGLETON_CLASS = method(:singleton_class).unbind
CLASS = method(:class).unbind
end
p Ledger::SINGLETON_CLASS
p Ledger::SINGLETON_CLASS.bind_call Ledger
p Ledger::CLASS.bind_call "rate"
p Object.new.method(:singleton_class).owner
p Ledger.method(:singleton_class).call
Output:
#<UnboundMethod: Kernel#singleton_class()>
#<Class:Ledger>
String
Kernel
#<Class:Ledger>