據http://rake.rubyforge.org/files/doc/rakefile_rdoc.html,您可以創建一個接受參數,也有先決條件任務:使用接受參數rake任務的前提
task :name, [:first_name, :last_name] => [:pre_name] do |t, args|
但是如果:pre_name的是,也接受參數的任務嗎?什麼是將參數傳遞給它的語法:當它被用作先決條件時的pre_name?
據http://rake.rubyforge.org/files/doc/rakefile_rdoc.html,您可以創建一個接受參數,也有先決條件任務:使用接受參數rake任務的前提
task :name, [:first_name, :last_name] => [:pre_name] do |t, args|
但是如果:pre_name的是,也接受參數的任務嗎?什麼是將參數傳遞給它的語法:當它被用作先決條件時的pre_name?
我沒有直接的答案,但我確實有一個替代解決方案可能適合你。我的rake任務都沒有使用參數。 (我想我試圖使用參數,並且無法讓它們工作。)相反,我依賴ENV數組。因此,舉例來說,我會寫這個例子的任務,因爲:
task :name =>:pre_name do
do_something_with_name(ENV['first_name'], ENV['last_name'])
end
這將被調用爲:
$ rake name first_name=John last_name=Smith
的ENV陣列中的數據將提供給pre_name任務爲好。
我知道我遲到了派對,但我遇到了同樣的問題,並且發現了一些沒有使用環境變量的東西。您可以使用Rake::Task.invoke
來執行此操作。下面是一個數據庫備份rake任務的例子:
namespace :db do
task :dump_db, [:dump_file, :rails_env] do |t, args|
puts "dumping to #{args[:dump_file]} with rails env = #{args[:rails_env]}"
end
task :stop_slave do
puts "stopping slave"
end
task :start_slave do
puts "starting slave"
end
task :upload_dump, [:dump_file] do |t, args|
puts "uploading #{args[:dump_file]}"
end
task :backup_to_s3, [:dump_file, :rails_env] do |t, args|
Rake::Task["db:stop_slave"].invoke()
Rake::Task["db:dump_db"].invoke(args[:dump_file], args[:rails_env])
Rake::Task["db:start_slave"].invoke()
Rake::Task["db:upload_dump"].invoke(args[:dump_file])
end
end
這其實很簡單 - :前置任務將獲得相同的參數原始任務。所有你需要做的就是確保簽名是相似的 - 例如,如果第一個任務收到:a::b:pre任務也需要接收它們。
查看更多在這裏:rake with params
非常好!正是我需要的! – nterry 2013-06-13 22:25:40
namespace :shell do
desc "Local hostname"
task :hostname do
puts "Local hostname"
sh "hostname"
end
desc "Local uptime"
task :uptime do
puts "Local uptime"
sh "uptime"
end
desc "Echo something"
task :echo,[:someword] do |t,args|
puts "--- #{args[:someword]} ---"
end
end
desc "Run all tasks"
task :all , [:someword] => ["shell:hostname","shell:uptime","shell:echo"] do
puts "Done."
end
您可以用4個前導空格標記源代碼 - 但您想要回答什麼?請給出一些信息,你想說你的代碼示例.. – knut 2015-09-28 20:40:18
雖然這個作品,請注意,它不會設置引用的任務是明確的先決條件相關。 – ledhed2222 2017-10-10 16:45:16