Rakefile 内の :default タスクが、rake に詳しくない人にとって利用可能なタスク (rake -T の出力) のリストも含まれる役立つメッセージになるようにしたいと考えています。
タスク内から rake -T を呼び出すにはどうすればよいでしょうか?
タスク内から rake -T を呼び出すことは、rake の新しいバージョンでは少し複雑になります。設定する必要があるオプションは、standard_rake_options メソッドの rake/lib/application.rb から派生する可能性があります。基本的にこれは要約すると、
Rake::TaskManager.record_task_metadata = true
task :default do
Rake::application.options.show_tasks = :tasks # this solves sidewaysmilk problem
Rake::application.options.show_task_pattern = //
Rake::application.display_tasks_and_comments
end
Record_task_metadata はデフォルトのタスク内から設定できないことに注意してください。タスクが実行されるときにはすでに手遅れになっているためです (説明は収集されていないため、それらは nil であり、したがってパターンに一致するタスクはありません)。タスク内から Rakefile をリロードしようとすると、閉ループが発生します。メタデータを常に収集する場合、パフォーマンスのトレードオフがあると思います。それが問題であれば
task :default do
system("rake -sT") # s for silent
end
の方が適しているかもしれません。
rake 0.9.2.2を使用すると、両方とも機能します。