我有一個需要傳遞參數的rake任務。例如,我要發出像將一個或兩個參數傳遞給Rake任務
<prompt> rake db:do_something 1
和rake任務裏面的命令:
...
cust = Customer.find(the_id_passed_in)
# do something with this customer record, etc...
...
非常簡單的,對不對?
我有一個需要傳遞參數的rake任務。例如,我要發出像將一個或兩個參數傳遞給Rake任務
<prompt> rake db:do_something 1
和rake任務裏面的命令:
...
cust = Customer.find(the_id_passed_in)
# do something with this customer record, etc...
...
非常簡單的,對不對?
rake命令接受和定義參數的方式並不美觀。
打電話給你的任務是這樣的:
<prompt> rake db:do_something[1,2]
我添加第二個參數來表明你需要逗號,但省略任何空格。
,並確定它是這樣的:
task :do_something, :arg1, :arg2 do |t, args|
args.with_defaults(:arg1 => "default_arg1_value", :arg2 => "default_arg2_value")
# args[:arg1] and args[:arg2] contain the arg values, subject to the defaults
end
雖然傳遞的參數,它是更好的選擇是輸入文件,這會是一個excel一個JSON或任何你需要的,並從那裏讀出的數據結構和變量你需要從包括變量名稱的需要。 讀取文件可以有以下結構。
namespace :name_sapace_task do
desc "Description task...."
task :name_task => :environment do
data = ActiveSupport::JSON.decode(File.read(Rails.root+"public/file.json")) if defined?(data)
# and work whit yoour data, example is data["user_id"]
end
end
{
"name_task": "I'm a task",
"user_id": 389,
"users_assigned": [389,672,524],
"task_id": 3
}
rake :name_task
的
爲什麼你給[兩個相同的答案](http://stackoverflow.com/a/22070576/861716)?最好回答一個問題,並將另一個問題標爲重複。 – 2014-02-27 22:58:14
可能重複[我如何通過命令行參數耙子任務嗎?](http://stackoverflow.com/questions/825748/how-do-i-pass-command-line-arguments-to-rake-task) – 2014-02-28 01:10:43