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