重复调用 Rake 任务
Call a Rake task repeatedly
我有一个 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
检查之前未调用该任务并且 early returns if it was。我不太了解 rake
,但重置此实例变量应该可以解决问题。
Rake::Task["db:work"].tap do |task|
task.invoke(0)
task.instance_variable_set(:@already_invoked, false)
task.invoke(nil)
end
我有一个 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
检查之前未调用该任务并且 early returns if it was。我不太了解 rake
,但重置此实例变量应该可以解决问题。
Rake::Task["db:work"].tap do |task|
task.invoke(0)
task.instance_variable_set(:@already_invoked, false)
task.invoke(nil)
end