Подтвердить что ты не робот

Передача параметра или двух в задачу Rake

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

<prompt> rake db:do_something 1

и внутри задачи рейка:

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

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

4b9b3361

Ответ 1

Способ команды 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

Ответ 2

При передаче параметров лучшим вариантом является входной файл, может ли это быть excel 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