Module: Uninheritable

Defined in:
lib/more/facets/uninheritable.rb

Overview

Uninheritable

Allows an object to declare itself as unable to be subclassed. The technique behind this is very simple (redefinition of #inherited), so this just provides an easier way to do the same thing with a consistent error message.

Usage

class A
  extend Uninheritable
end

class B < A; end # => raises TypeError

Instance Method Summary collapse

Instance Method Details

#inherited(klass) ⇒ Object

Redefines a class’s #inherited definition to prevent subclassing of the class extended by this module.

Raises:

  • (TypeError)


51
52
53
# File 'lib/more/facets/uninheritable.rb', line 51

def inherited(klass)
  raise TypeError, "Class #{self} cannot be subclassed."
end