我有一个rake任务,我想将参数传递给。例如,我想发出像
这样的命令<prompt> rake db:do_something 1
并在rake任务中:
...
cust = Customer.find( the_id_passed_in )
# do something with this customer record, etc...
...
非常简单,对吧?
答案 0 :(得分:38)
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
答案 1 :(得分:0)
在传递参数时,最好选择输入文件,这可以是一个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