It was my understanding that there weren't any functions per se, but that everything was a method and that anything whose class you don't have to name explicitly is really a method of the `Kernel`.

I thought methods are objects because that method `gets` has a method `chomp` as in `myStr = gets.chomp`. [Ruby-doc.org](http://ruby-doc.org/core-2.2.0/String.html) tells that `chomp` is a `String` method. In fact, `gets.class` tells that `gets` is a `String` object. What is going on here? How can a `method` be a `String` object? From what mechanism does this behavior result, and where can I learn more about it?