From: "Dan0042 (Daniel DeLorme)" Date: 2022-03-10T02:11:41+00:00 Subject: [ruby-core:107810] [Ruby master Feature#18618] no clobber def Issue #18618 has been updated by Dan0042 (Daniel DeLorme). I like this idea. But no one will use this feature if you need to always opt-in via `ncdef`. It would make more sense as a $VERBOSE warning that can be turned off when you know you want to clobber. ```ruby class Dog def a; end def b; end def b; end #=> already has a warning; avoid by using `undef b` end class Poodle < Dog no_clobber! #maybe turn on warnings for this class via DSL? def a; super; end #=> no warning due to `super` keyword in method def b; end #=> warning; avoid by using `undef b` end ``` ---------------------------------------- Feature #18618: no clobber def https://bugs.ruby-lang.org/issues/18618#change-96738 * Author: ed_ (Ed Mangimelli) * Status: Open * Priority: Normal ---------------------------------------- Sometimes I want to be certain I'm not clobbering/masking a method: ``` class Dog def bark 'bark!' end end class Poodle < Dog raise if method_defined? :bark def bark 'bow-wow' end end ``` I propose creating a shorthand. Maybe something like: ``` class Dog def bark 'bark!' end end class Poodle < Dog ncdef bark # "no clobber" def 'bow-wow' end end => # ``` This would be useful in scenarios where subclassing a class (or including a mixin) ***you don't own*** is common practice --for instance, subclassing `ApplicationRecord` for your model in Rails. I agree that `ncdef` is pretty ugly. Maybe `def!` -- https://bugs.ruby-lang.org/ Unsubscribe: