ドキュメントを読み、かなりの数の例を見ましたが、デフォルトと名前空間については明確ではありません。(rake、バージョン 10.0.3 を使用)
まず、これを明示的に見た覚えはありませんが、定義されているタスクの数に関係なく、デフォルト タスクは 1 つしか存在しないようです。どうやら読み込み順序 (PROJECT_NAME::Application.load_tasks) によって勝者が決まるようです。名前空間付きのデフォルトを作成するのに苦労したとき、Rails アプリの通常のデフォルトをオーバーライドすることがあることがわかりました。
rake
デフォルトでは、テストを実行します。
まず、「rake -T」コマンドは次のとおりです。
$ rake -T a_name
rake a_name:a_task_1 # a_task_1
rake a_name:a_task_2 # a_task_2
rake a_name:b_name:b_task_1 # b_task_1
rake a_name:b_name:b_task_2 # b_task_2
rake a_name:default # This is hopefully a namespaced default
「デフォルト」であることを望んでいる名前空間のみを実行すると、次のようになります。
$ rake a_name
rake aborted!
Don't know how to build task 'a_name'
(See full trace by running task with --trace)
デフォルトとして宣言しているので、これが b_name 名前空間で b_task_1 を実行することを期待していました
ただし、「デフォルト」という言葉を明示的に追加すると、次のようになります。
$ rake a_name:default
a_task_1
とにかく、私は完全に混乱しています。誰でも私のためにこれを明確にするのを助けることができます...
namespace :a_name do
desc "a_task_1"
task :a_task_1 do
puts "a_task_1"
end
desc "a_task_2"
task :a_task_2 do
puts "a_task_2"
end
namespace :b_name do
desc "b_task_1"
task :b_task_1 do
puts "b_task_1"
end
desc "b_task_2"
task :b_task_2 do
puts "b_task_2"
end
end
desc "This is hopefully a namespaced default"
task :default => 'b_name:b_task_1'
end