rake -T では表示されないRakeタスクについて

Rakefileの中に定義されているRakeタスクを確認しようと、 rake -T したところ表示されないRakeタスクがあったため、メモを残します。

 

環境

  • rake 13.0.2

 

原因

ヘルプに書いてありました。

rake -T では desc がないRakeタスクは表示されないとのことでした。

% rake --help

-T, --tasks [PATTERN]            Display the tasks (matching optional PATTERN) with descriptions, then exit. -AT combination displays all of tasks contained no description.

 

確認

こんな感じでRakefileを作ってみました。

desc "シナノゴールド"
task :shinanogold do
    puts '黄色'
end

desc ""
task :fuji do
    puts ''
end

desc nil
task :orin do
    puts ''
end

task :pinklady do
    puts 'ピンク'
end

 
rake -T の場合、descがあるものだけ表示されました。

% rake -T
rake shinanogold  # シナノゴールド

 
一方、 rake -TA の場合、すべて表示されました。

% rake -AT
rake fuji         # 
rake orin         # 
rake pinklady     # 
rake shinanogold  # シナノゴールド

 
なお、 rake -TA では表示されませんでした。

% rake -TA #=> 何も表示されない

 
他に、 rake -P などでも表示されるようです。
ruby on rails - Why is rake db:migrate:reset not listed in rake -T? - Stack Overflow

今回はgrepを渡さなくても、全件表示されました。

% rake -P
rake fuji
rake orin
rake pinklady
rake shinanogold

 
また、D オプションと組み合わせた時はこんな感じでした。

% rake -D 
rake shinanogold
    シナノゴールド


% rake -AD
rake fuji

rake orin

rake pinklady

rake shinanogold
    シナノゴールド