Передача аргументов методу в 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

person Niyanta    schedule 03.06.2015    source источник
comment
Я не совсем уверен, почему это дубликат, так как я не уверен, как этот вопрос может решить мою проблему. Пожалуйста, уточните, если можете.   -  person Niyanta    schedule 03.06.2015
comment
В первом примере принятого ответа вы можете видеть, что к args можно обращаться как к хешу, поэтому args[:arg1] даст первый аргумент и так далее.   -  person PinnyM    schedule 03.06.2015


Ответы (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

Эти параметры не являются общими параметрами командной строки, вы должны использовать их непосредственно как параметры параметра rake. В примере значения параметров 1 и 2:

rake daily_sales_commission[1,2]

(1) Это не хеш, это объект Rake :: TaskArguments. Но вы также можете использовать [] для доступа к параметрам.

person knut    schedule 03.06.2015