Files
dunlop-core/app/services/implement_in_subclass.rb
T
2018-01-20 13:02:44 -03:00

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