module AbstractClass
Declares a class as abstract which prevents instantiation or allocation.
Constants
- Error
The exception raised when an abstract class is instantiated or allocated.
- VERSION
Public Class Methods
extended(mod)
click to toggle source
# File lib/abstract_class.rb 8 def self.extended(mod) 9 mod.abstract_classes << mod 10 end
Public Instance Methods
abstract_classes()
click to toggle source
Stores a collection of classes that have been declared as abstract.
# File lib/abstract_class.rb 13 def abstract_classes 14 @@abstract_classes ||= [] 15 end
allocate(*args)
click to toggle source
Raises {AbstractClass::Error} if the class is abstract
Calls superclass method
# File lib/abstract_class.rb 18 def allocate(*args) 19 raise_if_abstract(:allocated) { super } 20 end
new(*args)
click to toggle source
Raises {AbstractClass::Error} if the class is abstract
Calls superclass method
# File lib/abstract_class.rb 23 def new(*args) 24 raise_if_abstract(:instantiated) { super } 25 end
Private Instance Methods
raise_if_abstract(method) { || ... }
click to toggle source
# File lib/abstract_class.rb 29 def raise_if_abstract(method) 30 if abstract_classes.include?(self) 31 raise Error, "abstract class #{self} can't be #{method}" 32 else 33 yield 34 end 35 end