人気ブログランキング | 話題のタグを見る

RoR config/boot.rb の構成

config/boot.rb の構成は、次のようになっている。

RAILS_ROOT = ....
module Rails
  class << self
    def boot!
      unless booted?
        preinitialize
        pick_boot.run
      end
    end
  ....
  end

  class Boot
  ....
  end

  class VendorBoot <Boot
  ....
  end

  class GemBoot <Boot
  ....
  end
end

# All that for this
Rails.boot!

トップレベルで実行されているのは、RAILS_ROOT 変数への代入と、Rails モジュールの定義と、Rails.boot! メソッドの実行の三つだけだ。

そうして、Rails.boot メソッドが何をしているかというと、unless booted? で Rails が既にブートされているかをチェックし、ブートされていなければ preinitialize した後、pick_boot.run で vender が提供する Rails があればそれを実行し、なければ RubyGems の Rails を実行する。

整然とした構成で、ほとんどのクラスやメソッドは Rails モジュールの中にカプセル化されている。さらに、Rails モジュールの中も、クラスごとに整頓されている。class << self を利用することで、クラスメソッドがひとまとめになっており、他のクラスと同じようなレベルで表記することが出来ている。

Rails モジュールの中のクラスの構成を見ると、class << self のクラスメソッドクラス、Boot クラス、Bootクラスの子クラスである VenderBoot クラス、GemBoot クラスからなっている。

ちょっと構成を眺めただけで、そのコードが何をしているのかが分かるソースは読むほうにはありがたい。また全体的にメソッドの定義がかなり短くまとまっているので、解読の負担が少ない。
by tnomura9 | 2008-10-17 06:32 | Ruby | Comments(0)
<< RoR config/boot... RoR config/boot.rb >>