Object.included_modules で Object に include されているモジュールを表示すると以下のようになる。

> Object.included_modules
=> [PP::ObjectMixin, Kernel]

PP::ObjectMixin, Kernel について調べてみた(by ChatGPT)。

Kernel

  • 定義場所 Ruby 標準ライブラリのコア(組み込み)モジュール
  • 混ぜ込まれるタイミング Object クラスが最初に include Kernel しているため、ほとんどすべてのオブジェクトで利用可能
  • 主な内容
    • putsprintp などの入出力メソッド
    • require/loadexitsystemspawn などのプロセス制御メソッド
    • classmoduleloop などの構文的メソッド
  • ポイント 本来は Kernel.method_name として呼び出すが、Object に混ぜ込まれているためレシーバーなしで直接利用可能

PP::ObjectMixin

  • 定義場所 標準ライブラリの pp(Pretty Print)ライブラリ
  • 混ぜ込まれるタイミング IRB や Rails コンソールで require "pp" が呼び出されると、自動的に Objectinclude される
  • 主な内容
    • #pp(インスタンスメソッド):オブジェクトを見やすく標準出力にプリント
    • #pretty_inspect:整形済みの文字列を返す
    • pretty_print 用の内部フック
  • ポイント 通常の p obj よりもネスト構造を整形して表示するため、複雑なデータ構造のデバッグに便利

まとめ

  • Kernel:Ruby の核となる共通メソッド群を提供
  • PP::ObjectMixin:オブジェクトを “Pretty Print” するためのメソッド群を提供

IRB/Rails コンソールでは、これらが最初から全オブジェクトに混ぜ込まれているので、すぐに利用できます。