1. ホーム
  2. ruby

[解決済み] Rake の名前空間に対するデフォルトのタスク

2023-04-09 03:19:24

質問

のようなものがあるとします。

namespace :my_tasks do
  task :foo do
    do_something
  end

  task :bar do
    do_something_else
  end

  task :all => [:foo, :bar]
end

どのようにすれば :all をデフォルトのタスクにして rake my_tasks を実行するとそれが呼び出されます (代わりに rake my_tasks:all )?

どのように解決するのですか?

このように名前空間の外に配置します。

namespace :my_tasks do
  task :foo do
    do_something
  end

  task :bar do
    do_something_else
  end

end

task :all => ["my_tasks:foo", "my_tasks:bar"]

また...あなたのタスクが引数を必要とするのであれば

namespace :my_tasks do
  task :foo, :arg1, :arg2 do |t, args|
    do_something
  end

  task :bar, :arg1, :arg2  do |t, args|
    do_something_else
  end

end

task :my_tasks, :arg1, :arg2 do |t, args|
  Rake::Task["my_tasks:foo"].invoke( args.arg1, args.arg2 )
  Rake::Task["my_tasks:bar"].invoke( args.arg1, args.arg2 )
end

2番目の例では、名前空間と同じ名前、つまり 'my_tasks' でタスクを呼び出すことができることに注意してください。