我希望任务以同样的方式获取参数,对调用方方法是透明的 #invoke
或 #execute
:
desc "Add task"
task :add do |t, args|
puts args.class
puts "Add"
end
desc "Sub task"
task :sub do |t, args|
puts args.class
puts "Sub"
end
desc "all"
task :all do
Rake::Task['add'].execute("arg1") # cannot set multiple arguments, will fail with "wrong number of arguments"
Rake::Task['sub'].invoke("arg1", "arg2")
end
结果是:
» rake all
String
Add
Rake::TaskArguments
Sub
检查源代码后,很明显这些实现是不同的。
是否有一种统一的方法来管理参数,无论它们来自何处(命令行,#调用还是#执行?)。我使用optpasse作为命令行参数,因此我现在的代码中有两个难看的解决方法。
1条答案
按热度按时间yh2wf1be1#
我想,如果
execute
如果参数数>1,则需要execute
参数是一个数组,用于收集所有这些参数,否则为execute
将使用nil或唯一的输入参数(例如字符串)执行。所以你打电话的方式execute
将与您的呼叫方式相匹配invoke
及execute
还是和原点一样。您可以为创建一个 Package 器(别名)
Rake::Task#execute
并按如下方式处理输入参数