关于rails上的ruby:将参数传递给Rake Task中的方法

Passing arguments to a method in Rake Task

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
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)一样访问该参数:

1
2
3
4
5
6
7
8
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作为参数值:

1
rake daily_sales_commission[1,2]

(1)它不是哈希,而是rake::taskArguments对象。但也可以使用[]访问参数。