rakeが実行されるまでを調べる

/usr/bin/rake
  • require_gem 'rake'したときに/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/binが$LOAD_PATHの先頭に追加される
  • load 'rake'を実行

/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/bin/rake
  • require 'rake'
  • Rake.application.runはRake::Application.runを実行

/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb


Rake::Application.runから呼び出すメソッドは

init
  • handle_options
    • オプションの処理
    • rakeのオプションはOpenStructのオブジェクトで管理されてる。
      • OpenStruct知らない。
    • グローバル変数の設定
  • collect_tasks
    • タスクの設定
    • "hoge=bar"形式のパラメータは環境変数に設定
    • それ以外の形式はインスタンス変数@top_level_tasksに追加
load_rakefile
  • raw_load_rakefile
    • have_rakefile
    • rakeファイルを延々と親ディレクトリをたどって探す
    • rakeファイルの形式は'rakefile', 'Rakefile', 'rakefile.rb', 'Rakefile.rb'のどれか
    • add_import
      • rakelibオプションで渡されたディレクトリにある*.rbファイルをインスタンス変数@pending_importsに詰める
    • Rake::TaskManager#load_imports
      • @pending_importsに詰めてあるファイル名からタスクを抽出(Rake::TaskManager#lookup)
      • タスクを実行?(Rake::Task#invoke)
    • なんかよくわからん。バテた。。
top_level
  • ここまでたどりつけなかった
  • トップレベルのタスクってなんのこと?