52

入力することで、考えられるすべてのレーキタスクを表示できることを知っています

rake -T

しかし、タスクが正確に何をするのかを知る必要があります。出力から、実際にタスクを含むソース ファイルを見つけるにはどうすればよいですか? たとえば、db:schema:dump タスクのソースを見つけようとしています。

4

4 に答える 4

90

これは古い質問であることは知っていますが、いずれにせよ:

rake -W

これは rake 0.9.0 で導入されました。

http://rake.rubyforge.org/doc/release_notes/rake-0_9_0_rdoc.html

タスクが定義されている場所を示す –where (-W) フラグのサポート。

于 2013-04-27T21:41:43.007 に答える
49

他の人が言っていることにもかかわらず、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 タスクのソースの場所を表示するために使用できます。

于 2012-04-12T18:50:24.120 に答える
0

Rails のほとんどの rake タスクについては、Rails gem ディレクトリの lib/tasks を参照してください。

アプリのディレクトリ構造に Rails をベンダー登録している場合は、代わりに vendor/rails/railties/lib/tasks を参照してください。

いずれにせよ、db:schema:dump は、databases.rake にあります。

于 2009-05-06T16:37:54.430 に答える