我有一个需要传递参数的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