Default task for namespace in Rake

前端 未结 8 1516
醉酒成梦
醉酒成梦 2020-12-12 23:05

Given something like:

namespace :my_tasks do
  task :foo do
    do_something
  end

  task :bar do
    do_something_else
  end

  task :all => [:foo, :bar         


        
相关标签:
8条回答
  • 2020-12-13 00:05

    Place it outside the namespace like this:

    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"]
    

    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
      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
    

    Notice how in the 2nd example you can call the task the same name as the namespace, ie 'my_tasks'

    0 讨论(0)
  • 2020-12-13 00:06

    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
      end
    end
    
    task :my_task do
      Rake::Task['my_task:foo'].invoke
      Rake::Task['my_task:bar'].invoke
    end
    

    Now you can run commands like,

    rake my_task:foo
    

    and

    rake my_task
    
    0 讨论(0)
提交回复
热议问题