入力することで、考えられるすべてのレーキタスクを表示できることを知っています
rake -T
しかし、タスクが正確に何をするのかを知る必要があります。出力から、実際にタスクを含むソース ファイルを見つけるにはどうすればよいですか? たとえば、db:schema:dump タスクのソースを見つけようとしています。
入力することで、考えられるすべてのレーキタスクを表示できることを知っています
rake -T
しかし、タスクが正確に何をするのかを知る必要があります。出力から、実際にタスクを含むソース ファイルを見つけるにはどうすればよいですか? たとえば、db:schema:dump タスクのソースを見つけようとしています。
これは古い質問であることは知っていますが、いずれにせよ:
rake -W
これは rake 0.9.0 で導入されました。
http://rake.rubyforge.org/doc/release_notes/rake-0_9_0_rdoc.html
タスクが定義されている場所を示す –where (-W) フラグのサポート。
他の人が言っていることにもかかわらず、Rails アプリケーションで rake タスクのソースの場所をプログラムで取得できます。これを行うには、コード内またはコンソールから次のようなものを実行するだけです。
# load all the tasks associated with the rails app
Rails.application.load_tasks
# get the source locations of actions called by a task
task_name = 'db:schema:load' # fully scoped task name
Rake.application[task_name].actions.map(&:source_location)
これにより、このタスクで実行されるコードのソースの場所が返されます。#prerequisites
の代わりにを使用#source_location
して、前提条件のタスク名 (「環境」など) のリストを取得することもできます。
以下を使用して、ロードされたすべてのタスクを一覧表示することもできます。
Rake.application.tasks
更新:以下のマグネの良い答えを参照してください。rake >= 0.9.0のバージョンでrake -W
は、rake タスクのソースの場所を表示するために使用できます。
Rails のほとんどの rake タスクについては、Rails gem ディレクトリの lib/tasks を参照してください。
アプリのディレクトリ構造に Rails をベンダー登録している場合は、代わりに vendor/rails/railties/lib/tasks を参照してください。
いずれにせよ、db:schema:dump は、databases.rake にあります。