Передача параметра или двух в задачу Rake - PullRequest
20 голосов
/ 06 марта 2011

У меня есть грабли, в которые я хочу передать параметры.Например, я хочу выполнить команду типа

<prompt> rake db:do_something 1

и внутри задачи rake:

...
cust = Customer.find( the_id_passed_in )
# do something with this customer record, etc...
...

Довольно просто, верно?

Ответы [ 2 ]

38 голосов
/ 06 марта 2011

То, как команды rake принимают и определяют аргументы, не очень красиво.

Назовите вашу задачу следующим образом:

<prompt> rake db:do_something[1,2]

Я добавил второй параметр, чтобы показать, что выВам понадобится запятая, но без пробелов.

И определите это так:

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
0 голосов
/ 27 февраля 2014

При передаче параметров лучше выбрать входной файл, может ли это быть json-файл или что-то еще, что вам нужно, и оттуда прочитать нужную вам структуру данных и переменные, включая имя переменной, если это необходимо. Для чтения файла может иметь следующую структуру.

  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

{
  "name_task": "I'm a task",
  "user_id": 389,
  "users_assigned": [389,672,524],
  "task_id": 3
}

Исполнение

rake :name_task 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...