普段何気なく使っているputsは、なんでどういった仕組みで使えるんだろうと気になったので、調べてみました。
結論としては、Kernelモジュールが1枚噛んでいました。
Kernelモジュールが提供するメソッド
puts
p
print
require
gets
上記のようなメソッドは、Kernelモジュールで定義されているらしい。
String、Numeric、Array、Hashなどのクラスは、全てObjectクラスを継承しているみたいです。
親クラスの確認
$ rails c
>> String.superclass
=> Object
>> Numeric.superclass
=> Object
>> Array.superclass
=> Object
>> Hash.superclass
=> Object
もともと、ほぼ全ての親クラスであるObjectクラス(superclassは、BasicObject)は、Kernelモジュールをincludeしているので、
putsメソッドを平然と何も考えなくとも、デフォルトでどのクラスでも使えるみたいです。
以下に具体的に、Kernelモジュールで定義されているメソッドの一覧が載ってます。