If `self` is always the implied receiver in Ruby, why doesn't `self.puts` work?

Viewed 1158

In Ruby, my understanding is that self is the implied receiver for any bare method call. However:

~: irb
>> puts "foo"
foo
=> nil
>> self.puts "foo"
NoMethodError: private method `puts' called for main:Object

What explains this?

In case it's any help:

>> method(:puts).owner
=> Kernel
4 Answers
Related