Ruby being an Object-Oriented language has the concept of self, but what is self?
If you said, “It means current object”. You are right. But it is a bit more complicated than that.
The keyword self in ruby gives access to the current object - the object that is receiving the current message. A method call in ruby is actually a message being sent to the receiver. When we write object.say_hello , we are sending the message say hello to the receiver object. object will respond to say_hello if there is a method body defined for it.
Inside the class self would mean the class itself, outside class self means main.
class Person
def i_am
self
end
def self.i_am
self
end
end
person = Person.new
person.i_am #=> #<Person:0x007fba740dc790>
Person.i_am #=> Person
self #=> main