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の中で呼んだクラスのクラスメソッドとしている。
というような気がするけど意識朦朧。


こちらこちらを参考にしました。