メタプログラミングRuby 1章
オープンクラス
標準クラスにメソッド追加すると、既存のメソッドとかち合う危険性があるので、基本的にはよっぽどのことがない限り標準クラスはいじらない方向でやっている。でもユニットテストをちゃんと定義しておけばなんとか回避できる気がしてきた。
定数
モジュールがディレクトリで定数はファイル。わかりやすい考え方
モジュール
モジュールをインクルードするとき、Rubyは無名クラスを作ってモジュールをラップし、継承チェーンに挿入する。なので、Module#ancestors の結果にモジュールが含まれるようになる。
モジュール関連のメソッド
- Module#ancestors
- 継承チェーンを取得する
- Module#constants
- 現在のスコープの定数を全て返す
- Module.constants
- トップレベルにある全ての定数を返す
- Module.nesting
- 現在のパス(モジュール階層)を返す