Linuxカーネルのソース読書を数年前に断念した前科があるけれど、いいの。
今回は最初から全部読む気ないから。
ピックアップ的に気になるところを読んでみよう。
Railsのソースは普通にインストールすれば
/usr/lib/ruby/gems/1.8/gems
にある(Macの場合)。
上記はRuby1.8の例なので適宜読み替えてください。
でもrvmなんかを使っていると場所が変わっているので、rvmで目的のverに切り替えてから「which rails」とすれば実行パスが出てくるので、その周辺にたぶんあります。
私の例では以下のパスでした。
~/.rvm/gems/ruby-1.9.2-p290/gems
でもどっから見たらいいのかよう分からん。
とりあえずrailsのはbinディレクトリしかないのでとりあえずrailsコマンドの中身を見てみる。
1 #!/usr/bin/env ruby
2
3 if File.exists?(File.join(File.expand_path('../..', __FILE__), '.git'))
4 railties_path = File.expand_path('../../railties/lib', __FILE__)
5 $:.unshift(railties_path)
6 end
7 require "rails/cli"
3行目では「gems」に「.git」があるか確認しています。
あれば「XXX/gems/railties/lib」をrailties_pathに格納します。
「$:」はロードパスを示す組み込み変数で「$LOAD_PATH」としても同じです。
5行目ではそのロードパスの先頭にrailties_pathを挿入しています。
7行目では「railities/lib/rails/cli.rb」を読み込んでいます。
要するに「railties/lib/rails/cli.rb」を読んでいるだけなんだけど、最初に「.git」の有無をチェックしているのはなぜだろう。
存在した場合だけロードパスにrailtiesのパスを先頭に追加している。
ググってみても分からん。
とりあえず課題として置いておこう。
とにもかくにもここから分かるのはRailsの一番核になっているのが
railtieだということ。
ここら辺りで予習しておくと良いでしょう。
0 件のコメント:
コメントを投稿