How do we use a module method inside a class method without extending the module?
module TestModule
def module_method
"module"
end
end
class TestClass
include TestModule
def self.testSelfMethod
str = module_method
puts str
end
TestClass.testSelfMethod
end
Then it returns:
test.rb:11:in `testSelfMethod': undefined local variable or method `module_method' for TestClass:Class (NameError)
By including the module, you make module_method is an instance method on TestClass, meaning you need to invoke it on an instance of the class, not the class itself.
If you want to make it a method on the class itself, you need to extend TestModule, not include it.
module TestModule
def module_method
"module"
end
end
class TestClass
extend TestModule # extend, not include
def self.testSelfMethod
str = module_method
puts str
end
TestClass.testSelfMethod # "method"
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With