ruby on rails - ejemplos - Pasando un parámetro o dos a una tarea de Rake
schedule cron rails (2)
Tengo una tarea de rake a la que quiero pasarle parámetros. Por ejemplo, quiero emitir un comando como
<prompt> rake db:do_something 1
y dentro de la tarea de rake:
...
cust = Customer.find( the_id_passed_in )
# do something with this customer record, etc...
...
Bastante sencillo, ¿verdad?
La forma en que los comandos de rake aceptan y definen los argumentos es, no, bonita.
Llame a su tarea de esta manera:
<prompt> rake db:do_something[1,2]
He agregado un segundo parámetro para mostrar que necesitará la coma, pero omita los espacios.
Y defínelo así:
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
Mientras se pasan los parámetros, es mejor optar por un archivo de entrada, ¿puede ser esto un excel a json o lo que sea que necesite y desde allí leer la estructura de datos y las variables que necesita, incluido el nombre de la variable, según sea necesario? Para leer un archivo puede tener la siguiente estructura.
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
Ejemplo json
{
"name_task": "I''m a task",
"user_id": 389,
"users_assigned": [389,672,524],
"task_id": 3
}
Ejecución
rake :name_task