From: "sawa (Tsuyoshi Sawada)" Date: 2022-04-19T08:44:53+00:00 Subject: [ruby-core:108290] [Ruby master Feature#18618] no clobber def Issue #18618 has been updated by sawa (Tsuyoshi Sawada). The fact that you want to raise an error suggests that you want this feature to take place during development, and not during production: You want to be notified when writing code so that you do not accidentally overwrite a method. If a new method overwrites an old one, then you want to remove the new definition entirely from the code, and if it does not, then you just want to end up with an ordinary `def` block in the final production code. If that is the case, I think such feature would be the responsibility of an IDE, and not of the Ruby implementation. Or, if that is not the case, and you want to keep the definition in the code base regardless of whether it overwrites or not, but not let the overwriting take effect, then in such case, I think you need some different mechanism. ---------------------------------------- Feature #18618: no clobber def https://bugs.ruby-lang.org/issues/18618#change-97311 * 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: