为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

精慕HU 2019-10-14 10:30:11
我有一个Rakefile,可以根据全局变量$build_type,用两种方式编译项目,可以是:debug或:release(结果放在单独的目录中):task :build => [:some_other_tasks] doend我希望创建一个任务,依次使用两种配置来编译项目,如下所示:task :build_all do  [ :debug, :release ].each do |t|    $build_type = t    # call task :build with all the tasks it depends on (?)  endend有没有办法像调用方法一样调用任务?还是我可以实现类似的目标?
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

如果您需要任务以方法的方式运行,那么使用实际方法呢?

task :build => [:some_other_tasks] do

  build

end


task :build_all do

  [:debug, :release].each { |t| build t }

end


def build(type = :debug)

  # ...

end

如果您愿意遵循rake的习惯用法,则可以根据过去的答案进行整理:

这总是执行任务,但不执行其依赖项:


Rake::Task["build"].execute

这将执行依赖关系,但仅在尚未被调用的情况下才执行任务:


Rake::Task["build"].invoke

这首先会重置任务的has_invoked状态,然后允许再次执行任务,依赖项和所有任务:


Rake::Task["build"].reenable

Rake::Task["build"].invoke

(注意,不会重新执行已经调用的依赖项)


查看完整回答
反对 回复 2019-10-14
?
繁花如伊

TA贡献2012条经验 获得超12个赞

task :build_all do

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

    $build_type = t

    Rake::Task["build"].reenable

    Rake::Task["build"].invoke

  end

end

那应该把你整理出来,我自己也需要同样的东西。


查看完整回答
反对 回复 2019-10-14
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

task :build_all do

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

    $build_type = t

    Rake::Task["build"].execute

  end

end


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 644 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信