你嘗試你的代碼?
當我執行你的代碼
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')
我得到
foo1 mode =
foo2 mode = par2
隨着Rake.application['all_foos'].invoke('par1')
我得到
foo1 mode = par1
foo2 mode =
如果你的主要任務包括所有參數的名字,你可以挑選你的子任務所需要的參數。
缺點:調用的順序在主任務和子任務之間是不同的。
你用來學習'Rake'的哪個教程。我也在學習'Rake'。 –
我閱讀文檔http://rake.rubyforge.org/doc/rakefile_rdoc。html – DiegoSalazar
這就是爲什麼我總是喜歡官方文檔 –