我有一个Rake任务,如下所示我已经简化了它。 我正在使用Windows上的Ruby 1.9。
也许你想猜一下调用下面的Rake任务“list_all_levels”的结果? 应该是:
"Hello level 1"
"Hello level 2"
"Hello level 3"
但出于我不知道的原因,它只打印“Hello level 1”,然后停止。
也就是说,它总是只调用第一个任务。 如果我将第一行更改为传递参数“42”,那么它将打印“Hello level 42”,然后停止。
我想知道为什么它不会三次调用任务并打印所有三行? 是否有任何方法可以让它按照我的预期工作?
task :list_all_levels => [] do
Rake::Task[:list].invoke 1
Rake::Task[:list].invoke 2
Rake::Task[:list].invoke 3
end
task :list, [:level] => [] do |t, args|
puts "Hello level #{args.level}"
end
execute
" 改为 "如果将其改为execute
",请注意 @PandaWood,因为它们并不完全相同。可以参考 rake execute vs invoke 了解更多信息。 - Ron