Rails Wayを読む(1)

昔、「Rails Way」って本を買ったんですが、よくわかんなくて頓挫しておりました。
最近、仕事でRailsに手を出し始めました。やっぱり実際に使ってみないとわからんですよね。「今だったら理解できるかも!」と思い、件の本を引っ張り出してきた次第です。

1. Railsの環境とコンフィグレーション

まずはpublic/dispatch.rbを実行します(rails2だとないの?gemの方にあるからそれを見てるのか?どうやって?)
config/environment.rbを読み込みます(だとすると、実質的なエントリポイントはここ?)。そのあとで読み込むRailsのバージョンを定義しています。

RAILS_GEM_VERSION = '2.3.4' unless defined? RAILS_GEM_VERSION

config/boot.rbを読み込みます(ここらへんまでrequireでファイルを読み込んでいます。まだRailsをロードしていないからですね)boot.rbには

# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb

と書いてあります。自分のアプリケーションの設定はconfig/environment.rbかconfig/environments/の下に書けよ、ってことですね。
boot.rbのなかには、RailsモジュールとBootクラス(およびその派生クラス)の定義が書いてあります。一番最後の行に

# All that for this:
Rails.boot!

という行があります。Rails#boot!のなかでは

  • config/preinitializer.rbがあったら読み込む
  • ブートストラップ*1の選択(vender/railsがあったらそっちを読み込むらしい)。適切なBootインスタンスを生成するってこと。
  • Boot#runを実行。VenderBootとGemBootで動きが違うようです。GemBootだと
    • RubyGemsをロード
    • 適切なバージョンのRailsをロード
    • initializer.rbをロード(これもない、Gemのなかに入っているのかな)ロードパスを構築するらしいです。

で、やっとconfig/environment.rbに戻ってくる。

Rails::Initializer.run do |config|
  # 省略
end

ここで追加のロードパスを設定したり、タイムゾーンの設定をすることができるようです。
疲れたので続きは明日。このペースだと1冊読み終わるのにどれだけかかるのか。気が遠くなります。

Rails Way (Professional Ruby Series)

Rails Way (Professional Ruby Series)

*1:コンピュータを起動すること。電源を投入してから操作可能な状態になるまで。要は初期化処理のことか?