如何从Rake任务中运行Rake任务?

我有一个Rakefile,可以根据全局变量$build_type,用两种方式编译项目,可以是:debug或:release(结果放在单独的目录中):


task :build => [:some_other_tasks] do

end

我希望创建一个任务,依次使用两种配置来编译项目,如下所示:


task :build_all do

  [ :debug, :release ].each do |t|

    $build_type = t

    # call task :build with all the tasks it depends on (?)

  end

end

有没有办法像调用方法一样调用任务?还是我可以实现类似的目标?


精慕HU
浏览 649回答 3
3回答

摇曳的蔷薇

如果您需要任务以方法的方式运行,那么使用实际方法呢?task :build => [:some_other_tasks] do  buildendtask :build_all do  [:debug, :release].each { |t| build t }enddef build(type = :debug)  # ...end如果您愿意遵循rake的习惯用法,则可以根据过去的答案进行整理:这总是执行任务,但不执行其依赖项:Rake::Task["build"].execute这将执行依赖关系,但仅在尚未被调用的情况下才执行任务:Rake::Task["build"].invoke这首先会重置任务的has_invoked状态,然后允许再次执行任务,依赖项和所有任务:Rake::Task["build"].reenableRake::Task["build"].invoke(注意,不会重新执行已经调用的依赖项)

繁花如伊

task :build_all do  [ :debug, :release ].each do |t|    $build_type = t    Rake::Task["build"].reenable    Rake::Task["build"].invoke  endend那应该把你整理出来,我自己也需要同样的东西。

慕姐4208626

task :build_all do  [ :debug, :release ].each do |t|    $build_type = t    Rake::Task["build"].execute  endend
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby