A bareword invocation calls a Ruby method without an explicit receiver or dot. In `puts "Hello"`, Ruby sends the `puts` message to the current object, `self`. Because some method calls omit visible message-sending syntax, recognizing the implicit receiver is essential to reading Ruby code. section 1.1.4 section 1.5
A bareword call and its explicit counterpart
`puts "Hello"` uses bareword style; `self.puts "Hello"` makes the receiver explicit. The two forms express the same target here: the object currently bound to `self`. Which object that is depends on Ruby's execution context. section 1.1.4
Top-level methods clarify why this syntax works. A method defined at the top level becomes a private instance method of `Object`, so it can be called without a receiver—or with `self`—but not with an unrelated explicit receiver. Since `Object` lies in the lookup path of nearly every object, such methods support script-friendly procedural commands. section 5.4.1 section 5.4.1
def talk
puts "Hello"
end
puts "Trying 'talk' with no receiver..."
talk 1
puts "Trying 'talk' with an explicit receiver..."
obj = Object.new
obj.talk 2
Compare a top-level method called bareword-style with the failure produced by an unrelated explicit receiver. section 5.4.1
