Introduction to Modules in Ruby


What is a Module?

In Ruby, a module is a way to package methods, classes, and constants into a single unit. Modules provide a convenient means to group related functionalities together. They promote code organization, reusability, and namespacing. In this guide, we'll explore the concept of modules in Ruby with examples.


Defining a Module

To define a module in Ruby, you use the module keyword, followed by the module's name. Here's an example:


module MathFunctions
def self.add(x, y)
x + y
end
def self.subtract(x, y)
x - y
end
end

In this example, we've defined a module named MathFunctions that contains two methods, add and subtract, which can be called using the module's namespace.


Using Modules for Namespacing

Modules are often used to provide a namespace for methods and prevent naming conflicts. Here's how you can use a module for namespacing:


module MyLibrary
class Book
attr_accessor :title, :author
def initialize(title, author)
@title = title
@author = author
end
end
end
book = MyLibrary::Book.new("Ruby Programming", "John Doe")

In this example, we've defined a module MyLibrary that contains a Book class. You access the Book class using the namespace MyLibrary::Book.


Using Modules for Mixins

Modules can also be used as mixins to add functionality to classes. Here's an example:


module Printable
def print
puts "Title: #{@title}"
puts "Author: #{@author}"
end
end
class Book
include Printable
attr_accessor :title, :author
def initialize(title, author)
@title = title
@author = author
end
end
book = Book.new("Ruby Programming", "John Doe")
book.print

In this example, we've defined a Printable module with a print method. The Book class includes the Printable module, which allows instances of Book to use the print method.


Conclusion

Modules in Ruby are a powerful tool for code organization, namespacing, and mixin functionality. They allow you to structure your code in a clean and maintainable way. By using modules, you can enhance the readability and maintainability of your Ruby programs.


Practice using modules in your Ruby programs to become a proficient Ruby developer. For more information, refer to the official Ruby documentation.


Happy coding!