Passing a parameter or two to a Rake task
我有一个rake任务,我想把参数传递给它。例如,我想发出如下命令
1 | <prompt> rake db:do_something 1 |
在rake任务中:
1 2 3 4 | ... cust = Customer.find( the_id_passed_in ) # do something with this customer record, etc... ... |
很简单,对吧?
rake命令接受和定义参数的方式并不漂亮。
以这种方式调用任务:
1 | <prompt> rake db:do_something[1,2] |
我添加了第二个参数来显示您需要逗号,但省略了任何空格。
定义如下:
1 2 3 4 | 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或任何需要的文件,然后从中读取数据结构和需要的变量,包括变量名。要读取文件,可以具有以下结构。
1 2 3 4 5 6 7 8 | 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 |
示例JSON
1 2 3 4 5 6 | { "name_task":"I'm a task", "user_id": 389, "users_assigned": [389,672,524], "task_id": 3 } |
执行
1 | rake :name_task |