module SubclassMustImplement
Either `include SubclassMustImplement` or `extend SubclassMustImplement` in your base class. Then call `subclass_must_implement` with a list of required method names as symbols. You can optionally pass in a custom error message using the `err_message` named argument.
Example 1:
class BaseFoo include SubclassMustImplement subclass_must_implement :foo, :bar, :baz end class Foo < BaseFoo def foo :foo end end f = Foo.new f.foo # returns :foo f.bar # raises a NotImplementedError that "bar" must be implemented in the subclass f.baz # raises a NotImplementedError that "baz" must be implemented in the subclass f.qux # raises a MethodMissing
Example 2:
class BaseBar extend SubclassMustImplement subclass_must_implement :foo, :bar, err_message: "Version expected!!!" end class Bar < BaseBar def bar :bar end end b = Bar.new b.bar # return :bar b.foo # raises a NotImplementedError with the specified error message "Version expected!!!"
Public Class Methods
default_error_message(method_name)
click to toggle source
Create the default error message for the given method name. @param method_name [String|Symbol] @return [String]
# File lib/subclass_must_implement.rb, line 64 def self.default_error_message(method_name) "`#{method_name}` must be implemented in a subclass." end
extended(base)
click to toggle source
Inject the `subclass_must_implement` macro.
# File lib/subclass_must_implement.rb, line 51 def self.extended(base) base.extend ClassMethods end
included(base)
click to toggle source
Inject the `subclass_must_implement` macro.
# File lib/subclass_must_implement.rb, line 46 def self.included(base) base.extend ClassMethods end
version()
click to toggle source
Return the Gem version as a string. @return [String]
# File lib/subclass_must_implement.rb, line 57 def self.version "0.0.2" end