Proposal: Enable refinements to `#method` and `#instance_method`
Proposal enable refinements to
It can be used in the following cases.
# default call to #pp module P2PP refine Kernel do def p obj pp obj end end end using P2PP # call to Kernel.#pp [1, 2, 3].map(&method(:p))
Also, when checking the defined position as follows, the
refine place is reflected.
module P2PP refine Kernel do def p obj pp obj end end end # Output to refine defined position # Before p method(:p).source_location # => nil p Kernel.instance_method(:p).source_location # => nil using P2PP # After p method(:p).source_location # => ["../ruby/test.rb", 4] p Kernel.instance_method(:p).source_location # => ["../ruby/test.rb", 4]
.: operators to work.
pull reqiest: https://github.com/ruby/ruby/pull/2034
Updated by shevegen (Robert A. Heiler) 3 months ago
I won't comment on the .: here and not about the first part
of the suggestions here either, but about .source_location
I agree as that would make sense (to me at the least).
Returning something that exists is better than returning
nil in this context. In a REPL this can be useful too since
one can e. g. automatically "jump" to the code in question
and modify it (I think pry is doing something like this).
I think matz has to decide whether he wants that functionality
to work (in regards to .source_location; I don't refer to
the other parts of the issue).
If approved I would then recommend, if it is changed, to
also add a comment for the documentation of
.source_location to mention that it works with refinements
too, and perhaps add an example, similar to the one
in this issue request: