Ruby Public Method
last modified April 27, 2025
This tutorial explains how to use Ruby's public method. Public
methods form the interface of your classes and are accessible from anywhere.
The public keyword in Ruby defines methods that can be called from anywhere in your program. By default, all methods in Ruby are public except when explicitly marked otherwise.
Public methods represent the external interface of your classes. They should be stable and well-documented as other code depends on them.
Basic Public Method Example
This simple example demonstrates a basic public method in a Ruby class. Public methods can be called on instances of the class.
class Greeter
def say_hello
puts "Hello, world!"
end
end
greeter = Greeter.new
greeter.say_hello
The say_hello method is public by default. We can call it on any
Greeter instance. Public methods form the class's public API.
Explicit Public Declaration
Ruby allows explicitly declaring methods as public using the public
keyword. This is useful after defining private or protected methods.
class Calculator
def add(a, b)
a + b
end
private
def secret_method
puts "This is private"
end
public
def multiply(a, b)
a * b
end
end
calc = Calculator.new
puts calc.add(2, 3)
puts calc.multiply(2, 3)
The multiply method is explicitly made public after the private
section. Both add and multiply are accessible.
Public Class Methods
Class methods can also be public. These are called on the class itself rather
than instances. The self. prefix defines class methods.
class Logger
def self.log(message)
puts "[LOG] #{message}"
end
def self.public_log(message)
puts "[PUBLIC] #{message}"
end
private_class_method :log
end
Logger.public_log("System started")
Only public_log is accessible here. We made log private
using private_class_method. Public class methods are often used for
utility functions.
Public Methods in Modules
Modules can define public methods that become available to classes that include them. These methods become part of the including class's public interface.
module Printable
def print_info
puts "Information: #{info}"
end
private
def info
"Sample data"
end
end
class Document
include Printable
end
doc = Document.new
doc.print_info
The print_info method is public and available on Document
instances. The private info method is only accessible within the
module.
Public Accessor Methods
Ruby provides shortcuts for creating public getter and setter methods. These are commonly used to expose instance variables.
class Person
attr_reader :name
attr_writer :age
attr_accessor :occupation
def initialize(name, age)
@name = name
@age = age
end
def display
puts "#{@name}, #{@age}, #{@occupation}"
end
end
person = Person.new("John", 30)
person.occupation = "Developer"
puts person.name
person.display
attr_reader creates a public getter, attr_writer a
public setter, and attr_accessor both. These are all public methods.
Public Method Overriding
Public methods can be overridden in subclasses. This allows modifying or extending behavior while maintaining the same interface.
class Animal
def speak
puts "Animal sound"
end
end
class Dog < Animal
def speak
puts "Woof!"
end
end
class Cat < Animal
def speak
super
puts "Meow!"
end
end
Dog.new.speak
Cat.new.speak
Both Dog and Cat override the public speak
method. Cat calls the parent implementation using super.
Public Method Aliasing
Ruby allows creating aliases for public methods. This is useful when you want to provide alternative names for methods.
class StringFormatter
def format_text(text)
text.upcase
end
alias :upcase_text :format_text
alias_method :uc_text, :format_text
end
formatter = StringFormatter.new
puts formatter.format_text("hello")
puts formatter.upcase_text("world")
puts formatter.uc_text("ruby")
Both alias and alias_method create new names for the
public method. All aliases remain public and can be called interchangeably.
Source
This tutorial covered Ruby's public methods with practical examples showing declaration, access control, and common usage patterns.
Author
List all Ruby tutorials.