我试过调用,但我不认为这会有所帮助。这是我试图实现的简短演示。
task :first_task => :dep do
puts "something else"
end
task :dep do
puts "something"
end
如果我跑
rake first_task
从命令行,依赖关系得到满足,然后执行first_task。
something
something else
但是如果我有一个值,请说:dep中的dir =“testdir”我想作为参数传递给:first_task?希望这是有道理的。
我认为谷歌会想出一些东西,但不是。非常感谢:)
答案 0 :(得分:3)
不确定您是否可以设置或传递参数,但可以使用实例变量:
task :first_task => :dep do
puts "something else"
puts @dir
end
task :dep do
puts "something"
@dir = "Foo"
end
或者只是局部变量:
dir = "default_dir"
task :first_task => :dep do
puts "something else"
puts dir
end
task :dep do
puts "something"
dir = "Foo"
end
对于某些类型的任务,设置环境变量可能更有意义:
task :first_task => :dep do
puts "something else"
puts ENV['dir']
end
task :dep do
puts "something"
ENV['dir'] = "Foo"
end
答案 1 :(得分:2)
它不完全适合您的问题,但可能会显示另一种方法,用于参数和rake并将它们转发给子任务。耙子任务可能会获得参数。
一个例子:
task :first_task, [:par1, :par2] do |t, args|
puts "#{t}: #{args.inspect}"
end
您可以使用rake first_task[1,2]
调用此任务。结果将是:
first_task: {:par1=>1, :par2=>2}
如果这些参数共享相同的密钥,则会将其转发给子任务。例如:
task :first_task, [:par1, :par2] => :second_task do |t, args|
puts "#{t}: #{args.inspect}"
end
task :second_task, :par2 do |t, args|
puts "#{t}: #{args.inspect}"
end
结果:
second_task: {:par2=>2}
first_task: {:par1=>1, :par2=>2}