まつもと ゆきひろです

In message "[ruby-list:18788] super"
    on 99/11/21, Kazuhiro Nishiyama <nishiyama / mx1.tiki.ne.jp> writes:

|以下のように複数のmoduleをincludeするとsuperで後の方のmoduleの
|initializeしか呼ばれないようですが、M1のinitializeが呼ばれる
|ようにするにはどうするのでしょうか?

結論から言えば initialize の中で super を呼んでください。モ
ジュールをインクルードすると言うことは、クラスの継承チェイン
の中にそのモジュールを挟み込むことになりますから、モジュール
の中でinitalizeのような「親クラスで定義されていることが強く
推測されるメソッド」を定義する場合にはどこかでsuperを呼んで
おくのが鉄則です。

やや難しい解説。

RubyにはCLOSでいうところのaround型のメソッド結合しかありませ
んので、明示的にsuperでスーパークラスのメソッドを呼んでおく
必要があります。
                                まつもと ゆきひろ /:|)