Пробовали ли вы свой код?
Когда я исполняю свой код
require 'rake'
task :environment
desc "foo1"
task :foo1, [ :mode ] => :environment do |t, args|
mode = args[:mode]
puts "foo1 mode = #{mode}"
end
desc "foo2"
task :foo2, [ :mode ] => :environment do |t, args|
mode = args[:mode]
puts "foo2 mode = #{mode}"
end
desc "all_foos"
task :all_foos, [ :mode ] => [ :foo1, :foo2 ]
Rake.application['all_foos'].invoke('par1')
я
foo1 mode = par1
foo2 mode = par1
С
Rake.application['all_foos'].invoke('par2')
я получаю:
foo1 mode = par2
foo2 mode = par2
Это решение, которое вы хотите.
Примечание: Rake.application['all_foos'].invoke('par2')
такая же, как внешний граблей вызов rake all_foos[par2]
идти дальше: Вы можете также использовать различные параметры.
Проверьте этот код:
require 'rake'
task :environment
desc "foo1"
task :foo1, [ :mode1 ] => :environment do |t, args|
mode = args[:mode1]
puts "foo1 mode = #{mode}"
end
desc "foo2"
task :foo2, [ :mode2 ] => :environment do |t, args|
mode = args[:mode2]
puts "foo2 mode = #{mode}"
end
desc "all_foos"
task :all_foos, [ :mode1, :mode2 ] => [ :foo1, :foo2 ]
Rake.application['all_foos'].invoke('par1', 'par2')
С Rake.application['all_foos'].invoke('par1', 'par2')
(или rake all_foos[par1,par2]
) я получаю:
foo1 mode = par1
foo2 mode = par2
С Rake.application['all_foos'].invoke('par1', 'par2')
(или rake all_foos[par1,par2]
) я получаю:
foo1 mode = par1
foo2 mode = par2
С Rake.application['all_foos'].invoke(nil, 'par2')
I get
foo1 mode =
foo2 mode = par2
С Rake.application['all_foos'].invoke('par1')
я
foo1 mode = par1
foo2 mode =
Если ваша главная задача содержит все имена параметров, вы можете выбрать необходимые параметры в своих подзадач.
Недостаток: последовательность в вызове отличается между основной задачей и подзадачами.
Какой учебник вы использовали для изучения «Рейк». Я также изучаю «Рейк». –
Я прочитал документы http://rake.rubyforge.org/doc/rakefile_rdoc.html – DiegoSalazar
вот почему я всегда люблю официальную документацию –