How do I execute Rake tasks with arguments multiple times?

前端 未结 4 1239
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-19 04:39

It\'s not possible to invoke the same rake task from within a loop more than once. But, I want to be able to call rake first and loop through an array

4条回答
  •  眼角桃花
    2021-02-19 04:58

    FWIW this might help someone so I'll post it.

    I wanted to be able to run one command from the CLI to run one Rake task multiple times (each time with new arguments, but that's not important).

    Example:

    rake my_task[x] my_task[y] my_task[z]
    

    However, since Rake sees all my_task as the same task regardless of the args, it will only invoke the first time my_task[x] and will not invoke my_task[y] and my_task[z].

    Using the Rake::Task#reenable method as mentioned in the other answers, I wrote a reenable Rake task which you can position to run after a task to allow it to run again.

    Result:

    rake my_task[x] reenable[my_task] my_task[y] reenable[my_task] my_task[z]
    

    I wouldn't say this is ideal but it works for my case.

    reenable Rake task source:

    task :reenable, [:taskname] do |_task, args|
      Rake::Task[args[:taskname]].reenable
      Rake::Task[:reenable].reenable
    end
    

提交回复
热议问题