class Module

Public Instance Methods

abstract_method(args_str, *method_names) click to toggle source

define abstract methods

# File lib/abstract.rb, line 41
def abstract_method args_str, *method_names
  method_names.each do |name|
    module_eval <<-END
      def #{name}(#{args_str})
        mesg = "class \#{self.class.name} must implement abstract method `#{self.name}##{name}()'."
        #mesg = "\#{self.class.name}##{name}() is not implemented."
        err = NotImplementedError.new mesg
        err.set_backtrace caller()
        raise err
      end
    END
  end
end