Including a module lets you add shared behaviors to many classes easily. It helps keep your code organized and avoids repeating the same methods.
You want to share the same methods across different classes without copying code.
You have helper methods that many objects should use.
You want to add features to objects without changing their original class.
You want to keep your code clean by grouping related methods together.
Syntax
Ruby
module ModuleName
def method_name
# method codeendendclass ClassName
include ModuleName
end
Use include inside a class to add instance methods from a module.
Methods from the module become available as instance methods of the class.
Examples
This example adds a say_hello method to Person instances using include.
Ruby
module Greetings
def say_hello
"Hello!"endendclass Person
include Greetings
endp = Person.newputsp.say_hello
Here, Calculator instances get the square method from the MathHelpers module.
Ruby
module MathHelpers
def square(x)
x * x
endendclass Calculator
include MathHelpers
end
calc = Calculator.newputs calc.square(5)
Sample Program
This program shows how including the Talk module adds the speak method to Dog instances.
Ruby
module Talk
def speak
"I can talk!"endendclass Dog
include Talk
end
my_dog = Dog.newputs my_dog.speak
OutputSuccess
Important Notes
If you use include multiple times, later modules can override methods from earlier ones.
Modules included this way add instance methods, not class methods.
Summary
Include adds module methods as instance methods to a class.
It helps share code between classes without repeating it.
Use it to keep your code organized and DRY (Don't Repeat Yourself).
Practice
(1/5)
1. What does the include keyword do in Ruby when used inside a class?
easy
A. It deletes all methods from the class.
B. It adds the module's methods as class methods to the class.
C. It creates a new module inside the class.
D. It adds the module's methods as instance methods to the class.
Solution
Step 1: Understand the role of include
The include keyword is used to add methods from a module into a class.
Step 2: Identify how methods are added
When a module is included, its methods become instance methods of the class, meaning objects of the class can call them.
Final Answer:
It adds the module's methods as instance methods to the class. -> Option D
Quick Check:
Include = instance methods added [OK]
Hint: Include adds module methods as instance methods [OK]
Common Mistakes:
Confusing include with extend (which adds class methods)
Thinking include creates a new module
Assuming include removes existing methods
2. Which of the following is the correct syntax to include a module named Greetings inside a class Person?
easy
A. class Person; include Greetings; end
B. class Person; extend Greetings; end
C. class Person; include(Greetings); end
D. class Person; use Greetings; end
Solution
Step 1: Recall correct syntax for including modules
In Ruby, to add instance methods from a module, use include ModuleName inside the class body without parentheses.
Step 2: Check each option
class Person; include Greetings; end uses include Greetings correctly. class Person; extend Greetings; end uses extend which adds class methods, not instance methods. class Person; include(Greetings); end uses parentheses which is not standard syntax. class Person; use Greetings; end uses use which is invalid in Ruby.
Final Answer:
class Person; include Greetings; end -> Option A
Quick Check:
Include syntax = include ModuleName [OK]
Hint: Use 'include ModuleName' without parentheses [OK]
Common Mistakes:
Using extend instead of include
Adding parentheses after include
Using invalid keywords like 'use'
3. What will be the output of the following Ruby code?
module Talk
def speak
"Hello!"
end
end
class Dog
include Talk
end
puts Dog.new.speak
medium
A. NoMethodError
B. Hello!
C. speak
D. nil
Solution
Step 1: Understand module inclusion
The module Talk defines an instance method speak. Including it in Dog adds speak as an instance method of Dog.
Step 2: Trace the method call
Creating a new Dog object and calling speak will execute the method from Talk, returning "Hello!".
Final Answer:
Hello! -> Option B
Quick Check:
Included method called = "Hello!" [OK]
Hint: Included module methods become instance methods [OK]
Common Mistakes:
Expecting NoMethodError because of missing method
Confusing instance and class methods
Thinking output is method name or nil
4. Identify the error in the following Ruby code:
module Walk
def walk
"Walking"
end
end
class Person
extend Walk
end
puts Person.new.walk
medium
A. NoMethodError because walk is not an instance method
B. SyntaxError due to extend usage
C. No error, outputs "Walking"
D. TypeError because module cannot be extended
Solution
Step 1: Understand extend vs include
Using extend Walk adds module methods as class methods, not instance methods.
Step 2: Analyze method call
Person.new.walk calls walk on an instance, but walk is only a class method here, so it raises NoMethodError.
Final Answer:
NoMethodError because walk is not an instance method -> Option A
Quick Check:
Extend adds class methods, instance call fails [OK]
Hint: Extend adds class methods; instance calls fail [OK]
Common Mistakes:
Confusing extend with include
Expecting no error on instance method call
Thinking extend causes syntax or type errors
5. Given the module and classes below, what will puts Cat.new.sound output?
module AnimalSounds
def sound
"Generic sound"
end
end
class Dog
include AnimalSounds
def sound
"Bark"
end
end
class Cat
include AnimalSounds
end
hard
A. Bark
B. NoMethodError
C. Generic sound
D. nil
Solution
Step 1: Check method definitions in classes
Class Dog overrides sound method with "Bark". Class Cat does not override it.
Step 2: Determine method lookup for Cat instance
Since Cat includes AnimalSounds and does not override sound, calling sound on Cat.new uses the module's method returning "Generic sound".
Final Answer:
Generic sound -> Option C
Quick Check:
Included method used if no override [OK]
Hint: Class method overrides module method if defined [OK]
Common Mistakes:
Assuming Cat uses Dog's sound method
Expecting NoMethodError for missing method
Confusing instance and class methods
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.