Default task for namespace in Rake
Place it outside the namespace like this:
namespace :my_tasks do task :foo do do_something end task :bar do do_something_else endendtask :all => ["my_tasks:foo", "my_tasks:bar"]
Also... if your tasks require arguments then:
namespace :my_tasks do task :foo, :arg1, :arg2 do |t, args| do_something end task :bar, :arg1, :arg2 do |t, args| do_something_else endendtask :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
Notice how in the 2nd example you can call the task the same name as the namespace, ie 'my_tasks'
Not very intuitive, but you can have a namespace and a task that have the same name, and that effectively gives you what you want. For instance
namespace :my_task do task :foo do do_foo end task :bar do do_bar endendtask :my_task do Rake::Task['my_task:foo'].invoke Rake::Task['my_task:bar'].invokeend
Now you can run commands like,
rake my_task:foo
and
rake my_task
I suggest you to use this if you have lots of tasks in the namespace.
task :my_tasks do Rake.application.in_namespace(:my_tasks){|namespace| namespace.tasks.each(&:invoke)}end
And then you can run all tasks in the namespace by:
rake my_tasks
With this, you don't need to worry to change your :all task when you add new tasks into that namespace.