Ruby include method tutorial explains how to use modules with practical examples.
last modified April 27, 2025
This tutorial explains Ruby’s include method for module inclusion. The include method mixes module functionality into classes.
The include method adds a module’s methods as instance methods to a class. This is Ruby’s primary mixin mechanism for sharing behavior.
Included modules become part of the class’s ancestor chain. Their methods are available to all instances. Multiple includes are processed in order.
This simple example shows how to include a module in a class. The module’s methods become available to class instances.
basic_include.rb
module Greeter def greet “Hello from module!” end end
class MyClass include Greeter end
obj = MyClass.new puts obj.greet
The Greeter module’s greet method becomes available to MyClass instances. The include statement makes this happen.
A class can include multiple modules. Methods are searched in reverse inclusion order (last included, first checked).
multiple_includes.rb
module ModuleA def identify “From ModuleA” end end
module ModuleB def identify “From ModuleB” end end
class MyClass include ModuleA include ModuleB end
obj = MyClass.new puts obj.identify
ModuleB’s method takes precedence because it was included last. Ruby searches modules in reverse inclusion order when resolving methods.
Included modules appear in a class’s ancestor chain. This example demonstrates how to inspect the inheritance hierarchy.
ancestors_chain.rb
module MyModule def module_method “Module method called” end end
class MyClass include MyModule end
puts MyClass.ancestors.inspect obj = MyClass.new puts obj.module_method
The ancestors method shows MyModule in the inheritance chain. This explains how instance methods become available.
When a class inherits from another, it also inherits all included modules. This example shows module inheritance.
inheritance_inclusion.rb
module SharedBehavior def shared_method “Available to all subclasses” end end
class Parent include SharedBehavior end
class Child < Parent end
obj = Child.new puts obj.shared_method
The Child class inherits SharedBehavior from its parent. Modules become part of the inheritance hierarchy.
While include adds instance methods, extend adds class methods. This example contrasts both approaches.
extend_vs_include.rb
module MyMethods def say_hello “Hello!” end end
class WithInclude include MyMethods end
class WithExtend extend MyMethods end
puts WithInclude.new.say_hello puts WithExtend.say_hello
include makes methods available to instances, while extend makes them available to the class itself. Both serve different purposes.
Ruby’s Kernel module is automatically included in Object. This example shows how to access kernel methods.
kernel_inclusion.rb
class MyClass
def use_kernel_method puts “This is a Kernel method” end end
obj = MyClass.new obj.use_kernel_method
Common methods like puts come from the Kernel module. They’re available everywhere because Object includes Kernel.
Modules can be included conditionally based on runtime factors. This allows flexible behavior composition.
conditional_include.rb
module AdminFeatures def admin_action “Performing admin action” end end
class User def initialize(is_admin) @is_admin = is_admin end
def check_admin extend AdminFeatures if @is_admin end end
admin = User.new(true) admin.check_admin puts admin.admin_action if admin.respond_to?(:admin_action)
Here we use extend conditionally to add admin features. The respond_to? check ensures safe method calling.
Ruby Module#include Documentation
This tutorial covered Ruby’s include method with practical examples showing module mixing, inheritance, and method lookup behavior.
My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.
List all Ruby tutorials.