Rails2.0も出たわけですし、早速ソース読みです。ちなみに2.0が出る前は全く追ってなかったので、どんな機能が追加されてるかまったく知りません。やっぱり目につくのはActiveModelなんですが、最初に見たいのはRails::Initializer。railsの起動時にconfigの下のenvironment.rbの中で、Rails::Initializer.runが実行されて、アプリケーションを初期化します。どう初期化されてるのかを知れば、環境のカスタマイズも自由自在。自分に適した環境に書き換えて、より快適なrailsライフを送れます。
まずは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がちょっと違うくらい?早く劇的びふぉーあふたーなところが見たいです
押忍
※このエントリはZDNETブロガーにより投稿されたものです。朝日インタラクティブ および ZDNET編集部の見解・意向を示すものではありません。