Rails2.0を読んでみる-初期化編

2007年12月13日 12:42
トラックバック (0)   コメント (0)
Rails2.0も出たわけですし、早速ソース読みです。ちなみに2.0が出る前は全く追ってなかったので、どんな機能が追加されてるかまったく知りません。やっぱり目につくのはActiveModelなんですが、最初に見たいのはRails::Initializer。railsの起動時にconfigの下のenvironment.rbの中で、Rails::Initializer.runが実行されて、アプリケーションを初期化します。どう初期化されてるのかを知れば、環境のカスタマイズも自由自在。自分に適した環境に書き換えて、より快適なrailsライフを送れます。
Rails Trac - initializer.rb

まずはenvironment.rbの中で実行されるrun
46 def self.run(command = :process, configuration = Configuration.new)
47   yield configuration if block_given?
48   initializer = new configuration
49   initializer.send(command)
50   initializer
51 end
47行目では、与えられたconfigrationを与えられたブロックで処理。
48行目のnewは勘違いしやすいけど、Rails::Initializer.newと同じ意味で、configrationはただの引数。Rails::Initializer.new(configration)ってことです。
49行目では48行目で作ったインスタンスに、commandで与えられた名前のメソッドを実行するよう言ってる。

で、デフォルトで実行されるのがprocessメソッド。中では順に初期化用のメソッドを呼んでるだけですね。
84  def process
85    check_ruby_version
86    set_load_path
87  
88    require_frameworks
89    set_autoload_paths
90    add_plugin_load_paths
91    load_environment
92 
93    initialize_encoding
94    initialize_database
95    initialize_logger
96    initialize_framework_logging
97    initialize_framework_views
98    initialize_dependency_mechanism
99    initialize_whiny_nils
100   initialize_temporary_directories
101   initialize_framework_settings
102
103   add_support_load_paths
104
105   load_plugins
106
107   # Observers are loaded after plugins in...略
108   load_observers
109
110   # Routing must be initialized after pl...略
111   initialize_routing
112
113   # the framework is now fully initialized
114   after_initialize
115
116   load_application_initializers
117 end
それぞれのメソッドは読めばわかると思うので説明は省きますが、だいたい中ではconfigrationのプロパティを元に、設定をアプリケーションに反映させています。つまり、46行目で引数のデフォルトになっているConfigrationクラスのインスタンスに、自分に適した設定をしてあげれば良いってことですね。
そしてそれをやってくれているのが47行目。でもってその実装はenvironment.rbからブロックで渡されてくる、と。

ここらへんは2.0で特に大きな変化はないっぽい?読み込むframeworkがちょっと違うくらい?早く劇的びふぉーあふたーなところが見たいです

押忍
最新エントリー
カテゴリ
月別のアーカイブ
プロフィール
吉見和也(Kazuya Yoshimi)
RAWHIDE.(ローハイド.)取締役兼最高技術責任者。Rubyで開発する心地よさに惚れ、Ruby道を邁進する日々。迷わず行けよ、行けばわかるさ、Ruby道。押忍!
Powered by
 

企画特集

Techno ExchangeTechno Exchange
仮想化技術がグリーンITにもたらすもの
仮想化環境で求められるストレージの要件仮想化環境で求められるストレージの要件
それに応えるNetAppの実力とは?
ZDNet Japan ホスティング特集ZDNet Japan ホスティング特集
2008年夏のホスティングサービスのトレンドは何?
セキュリティ対策レベルテスト公開!セキュリティ対策レベルテスト公開!
自社のセキュリティのウイークポイントはドコ?
Webセキュリティ特集Webセキュリティ特集
Web2.0時代の脅威へ対抗するためのソリューションとは?
APC SOLUTIONS FORUM 2008をレポートAPC SOLUTIONS FORUM 2008をレポート
電源、冷却の効率化によるエネルギー削減とは?
ZDNet Japan Green ITZDNet Japan Green IT
サミットだけでは終わらせない!エンタープライズの取り組みはこれからだ!
DELLが掲げる「新・仮想化アセスメントサービス」DELLが掲げる「新・仮想化アセスメントサービス」
〜企業システムの仮想化環境の構築を支援〜
PRADA Phone開封の儀--iPhoneと比べてみました
NTTドコモから発売されている「PRADA Phone by LG」を編集部が入手した。同じタッチパネルケータイであるiPhoneとはどう違うのか、比べながら箱を開けてみた。
iPhoneとPRADA Phone、入力インターフェースはどう違うか
この夏に発売された、注目のタッチパネルケータイ「iPhone 3G」と「PRADA Phone by LG」。いずれもタッチパネルの入力方法にさまざまな工夫を凝らしている。
毎日新聞社内で何が起きているのか(上)
電凸が引き起こしたすさまじい破壊力 毎日新聞の英語版サイト「毎日デイリーニューズ」が女性蔑視の低...