19 lines
539 B
Ruby
19 lines
539 B
Ruby
# To force an interface raise this error:
|
|
# raise ImplementInSubclass.new(self)
|
|
# to raise an error with a nice message
|
|
class ImplementInSubclass < StandardError
|
|
def initialize(klass)
|
|
@calling_method = caller_locations(2,1)[0]
|
|
@concerning_class = klass.is_a?(Class) ? klass : klass.class # can be called from instance or class
|
|
super
|
|
end
|
|
|
|
def method_to_be_implemented
|
|
@calling_method.label
|
|
end
|
|
|
|
def message
|
|
"Implement method: #{method_to_be_implemented} in a subclass of #{@concerning_class.name}"
|
|
end
|
|
end
|