Rubyのclassにmoduleをmix-inする場合に、moduleをclassにincludeした場合とclassをmoduleでextendした場合で何が違うのか? よく判らなくなるのでシンプルな実例でまとめます。 「モジュールがクラスメソッドではなく、インスタンスメソッドを定義しているとき、これらのインスタンスメソッドは、ほかのクラスにミックスインできる」(「プログラミング言語Ruby」261ページ)とあります。そして「モジュールをミックスインするための通常の方法は、Module.includeメソッドだが、Object.extendを使う方法もある」(同262ページ)となっています。includeとextendで何が違うの? となり、時どき理解の足りない書き方をしてNoMethodError: undefined method...のような例外をだしてしまうことがあります。そこ