ruby - 重复调用 Rake 任务
问题描述
我有一个 Rake 任务,它调用了许多其他 Rake 任务,一个重复:
task :cycle do
Rake::Task["db:work"].invoke(0)
Rake::Task["db:work"].invoke(nil)
end
task :work, [:version,] do |t, args|
if args[:version]
puts " * Migrating to version #{args[:version]}"
else
puts " * Migrating to latest version"
end
end
当我运行cycle
任务时,它只运行work
一次任务:
$ rake db:cycle
* Migrating to version 0
我期待这个:
$ rake db:cycle
* Migrating to version 0
* Migrating to latest version
有没有办法强制 Rake 运行这两个任务?
解决方案
rake
是OSS,顺便说一句。
Rake::Task#invoke
检查该任务是否先前未被调用,如果是则提前返回。我不太了解rake
,但重置此实例变量应该可以解决问题。
Rake::Task["db:work"].tap do |task|
task.invoke(0)
task.instance_variable_set(:@already_invoked, false)
task.invoke(nil)
end
推荐阅读
- kendo-ui - Kendo UI PanelBar使用dataSource给出堆栈溢出js错误
- wordpress - 如何让我的 iframe 适合整个页面并且没有滚动条?
- python - 如何使用 xml 命名空间遍历 ElementTree 中的根元素
- java - 如果显示下一页xpath,点击它并统计下一页的元素,只要下一页存在就继续
- css - 如何在 reactjs 中使用 sass 文件的变量
- c - double 和 long double 之间十进制数的差异
- hive - 如何将 split_part greenplum 迁移到 hive 支持的功能中
- typescript - 如何在 Typescript 中设置函数语句的签名类型?
- java - yamlMapper.readValue 将值与下一个属性名称连接导致 InvaidFormatException
- c - 将代码添加到将创建 I/O proc_entry 的 linux 内核,然后读取此条目中的默认值