Передача параметра или двух в задачу Rake
У меня есть задача rake, для которой я хочу передать параметры. Например, я хочу выпустить команду типа
<prompt> rake db:do_something 1
и внутри задачи рейка:
...
cust = Customer.find( the_id_passed_in )
# do something with this customer record, etc...
...
Довольно просто, правильно?
Ответы
Ответ 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