【ruby】 メソッド探索から見る、モジュール・特異メソッド・特異クラス

rubyを書き始めて間もない頃、 「なんで NoMethodError なんだ...。あ、メソッド定義にself 付けたら通った。」 みたいなことがありました。 rubyの本を読んでいると、そのあたりがハッキリとイメージできるようになったのでまとめておきます。