module Abstractize
Mixin for abstract classes
Constants
- VERSION
Public Class Methods
abstract_method()
click to toggle source
# File lib/abstractize.rb, line 22 def abstract_method lambda do |name| define_method(name) do |*_args| fail AbstractError, 'not implemented' end end end
abstract_new(base)
click to toggle source
Calls superclass method
# File lib/abstractize.rb, line 15 def abstract_new(base) lambda do |*args| fail AbstractError, "cannot instanciate #{name}" if self == base super(*args) end end
included(base)
click to toggle source
# File lib/abstractize.rb, line 6 def self.included(base) (class << base; self; end).instance_eval do define_method(:new, Abstractize.abstract_new(base)) define_method(:define_abstract_method, Abstractize.abstract_method) end end
Private Instance Methods
abstract_method()
click to toggle source
# File lib/abstractize.rb, line 22 def abstract_method lambda do |name| define_method(name) do |*_args| fail AbstractError, 'not implemented' end end end
abstract_new(base)
click to toggle source
Calls superclass method
# File lib/abstractize.rb, line 15 def abstract_new(base) lambda do |*args| fail AbstractError, "cannot instanciate #{name}" if self == base super(*args) end end