From: "konsolebox (K B) via ruby-core" Date: 2023-09-10T15:03:56+00:00 Subject: [ruby-core:114677] [Ruby master Feature#19871] Add __owner__ Issue #19871 has been updated by konsolebox (K B). The changes needed to implement this turned out to be just simple so I went ahead and just created a PR in https://github.com/ruby/ruby/pull/8411. The difference between using `method(__method__).owner` and using `__owner__` can be demonstrated in the following code: ``` ruby module M C = 1234 def m puts "method(__method__).owner: #{method(__method__).owner}" puts "method(__method__).owner::C: #{method(__method__).owner::C}" puts "__owner__: #{__owner__}" puts "__owner__::C: #{__owner__::C}" end end class N include M C = 5678 def m super end end N.new.m ``` Output: ``` method(__method__).owner: N method(__method__).owner::C: 5678 __owner__: M __owner__::C: 1234 ``` ---------------------------------------- Feature #19871: Add __owner__ https://bugs.ruby-lang.org/issues/19871#change-104506 * Author: konsolebox (K B) * Status: Open * Priority: Normal ---------------------------------------- Which will give the owner of the currently executing method. `method(__method__).owner` or `method(__callee__).owner` isn't enough since it may return a different owner if the method is overridden. Relying on calling the name of its owner is also theoretically not reliable since the constant can be overshadowed and it makes code less portable when moving it from one namespace to another. -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/