I have the following code
module Hello
def hello_world
puts "Hello World"
end
end
class Test
extend Hello
end
test = Test
test.hello_world
Hello.hello_world
and this has the following output
Hello World
main.rb:13:in `<main>': undefined method `hello_world' for Hello:Module (NoMethodError)
How do I get the code above to work so that both test.hello_world and Hello.hello_world work?
>Solution :
Hello doesn’t respond to hello_world because hello_world is not a class method. You can get the desired behavior by extending the Hello module with self like this:
module Hello
extend self
def hello_world
puts "Hello World"
end
end
class Test
extend Hello
end
test = Test
test.hello_world #=> Hello World
Hello.hello_world #=> Hello World