将参数传递给Rake Task中的方法

时间:2015-06-03 16:26:25

标签: ruby-on-rails ruby command-line-arguments rake-task

我有一个Rake任务,其中我从命令行获取两个参数,我需要将这些参数传递给任务中的方法。我该怎么做?

namespace :auto_sales_commission do
   desc "Process for Daily Summary Commission"
   task :daily_sales_commission,[:arg1, :arg2] => :environment do |t,args|
        #some code
   end

   def get_date(arg1,arg2)
        #some code
   end
end

1 个答案:

答案 0 :(得分:1)

您可以像hash-parameter(1)一样访问参数:

task :daily_sales_commission, [:arg1, :arg2] do |t,args|
  #args can be treated like a hash.
  get_date(args[:arg1], args[:arg2]) #<- call your method
end

def get_date(arg1,arg2)
    #some code
end

这些参数不是常用的命令行参数,必须直接将它们用作rake参数的参数。该示例将1和2作为参数值:

rake daily_sales_commission[1,2]

(1)它不是Hash,它是一个Rake :: TaskArguments对象。但您也可以使用[]来访问参数。