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
Methods
Public Instance methods
inherited(klass)

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

# File lib/facets/more/uninheritable.rb, line 41
  def inherited(klass)
    raise TypeError, "Class #{self} cannot be subclassed."
  end