require
requireはKernelモジュールのメソッド
外部ライブラリを読み込む
requireは1度だけ読み込む、無条件に読み込ませたい場合はload
include
includeはModuleクラスのメソッド
ファイルの読み込みはしない
引数にモジュールを取り、includeしたクラスにincludeされたモジュールの性質を追加する
- includeは「モジュールを使うよって宣言」ではなくて「モジュールが持ってる性質を、クラスに組み込むメソッド」
- class/module文の中で使うと、モジュールの特徴をそのクラスに追加する
- モジュールの中でdef self.hogeとして定義されてたやつはそのクラスのクラスメソッドになる
- モジュールの中でdef fugaとして定義されてたやつはそのクラスのインスタンスメソッドになる
- class/module文の外で使うと、モジュールの特徴をObjectクラスに追加する
- モジュールの中でdef fugaとして定義されてたやつは全てのクラスのインスタンスメソッドになる
- モジュールのメソッドがincludeしたクラスのインスタンスメソッドとして使えるようになる。