2015-06-03 156 views
1

的方法我有一个Rake任务,其中我从命令行取两个参数,我需要那些参数传递到里面的任务的方法。我怎么做?将参数传递给在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 
+0

我真的不知道这是为什么重复的,因为我不知道这个问题如何解决我的问题。请详细说明一下,如果U可以。 – Niyanta

+0

在接受答案的第一个例子,你可以看到'args'可以作为一个哈希访问,所以'ARGS [:ARG1]'将产生第一个参数,等等。 – PinnyM

回答

1

您可以访问参数如哈希参数(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 

这些参数是不常见的命令行参数,你必须直接使用它们作为耙参数的参数。的例子中,为1和2作为参数值:

rake daily_sales_commission[1,2] 

(1)它不是一个散列,它是瑞克:: TaskArguments对象。但你也可以使用[]进入参数设置。