ARの定義
active_record.rb
ActiveRecord::Base.class_eval include ... end
active_record.rbはこうなってます。
正直、ぱっと見何やってんのかわからなかった。
なぜ、下のような定義ではないのか。
class ActiveRecord::Base include ... end
(そうぞう)
クラスのincludeはオブジェクトを生成する時点で呼ばれて、
moduleのメソッドが使えるオブジェクトを生成するのではないだろか。
includeしたmoduleのメソッドはオブジェクトからしか使えない。
えっと、つまりincludeしたmoduleのメソッドはインスタンスメソッドになる。
でも、includeしたmoduleのメソッドをクラスメソッドにしたかったから、
クラスを定義した時点でincludeを実行して(class_eval)、includeが実行されたときに呼ばれるmodule側で
self.append_features(base)が実行されて、このappend_featuresの中で呼んだクラスのクラスメソッドとしている。
というような気がするけど意識朦朧。