config/boot.rb の解読も、GemBoot クラスで終わりだ。いろいろ回り道をして準備をしたのであとは一気に読んでいこう。GemBoot クラスのプログラムの概要は次のようになっている。
class GemBoot < Boot def load_initializer self.class.load_rubygems load_rails_gem require 'initializer' end def load_rails_gem class << self def rubygems_version def gem_version def load_rubygems def parse_gem_version(text) private def read_environment_rb end インスタンスメソッドが二つ、クラスメソッドが5つ定義されている。このうち冒頭の load_inititalizer は上位の Boot クラスのオーバーライドだ。GemBoot クラスでは Boot クラスの load_initializer インスタンスメソッドをオーバーライドし、load_rails_gem インスタンスメソッドを追加している。 class << self の記法で、クラスメソッドにまとめられた5つのメソッドは、インスタンスメソッドと区別して内部処理用に使われているように見える。関数呼び出しの中で、self.class.load_rubygems のように頭に self.class がついているのは、自分自身のクラスメソッドを使うためだ。 冒頭の load_initializer だけ中身を表示したのはそれが最終的に行われる処理だからだ。つまり、RubyGems を読み込み、Rails を読み込むための前処理をし、requie 'initializer' でRailsを読み込むという処理が行われる。 ところで、上の関数群の依存性を図示すると次のようになる。 load_initializer self.class.load_rubygems self.class.rubygems_verision load_rails_gem self.class.gem_verion self.class.parse_gem_version self.class.read_environment_rb require 'initializer' コードの意味を知るためには上のトップダウンのアプローチとは別に、下位の関数の動作を irb でテストしてみるボトムアップの方法が有用だ。それについては、次回からのエントリーで調べてみる。
by tnomura9
| 2008-10-22 12:43
| Ruby
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||