Ayer aprendí un par de cosillas sobre la creación de tareas en Rails 4, y para no olvidar… Apuntado queda.
Acceder al modelo de la aplicación
Para acceder al modelo de la aplicación sólo debemos hacer que la tarea sea dependiente del entorno de ejecución:
task task_name: :environment do |t|
# You can use your model from here
end
La parte interesante aquí es :environment. Este pequeño código hace toda la magia necesaria para poder acceder a nuestro modelo, sin esto no funciona. Haz la prueba.
Una explicación un poquito más correcta es que a las tareas les puedes pasar un array de dependencias. Es lo que hacemos al añadir :environment detrás del nombre de la tarea en formato clave: :valor (vaya, un hash).
Pasar parámetros
Hay dos maneras de pasar parámetros (que yo conozca). La oficial, según la guía de Rails es la siguiente:
task :task_name, [:arg_1] do |t, args|
# You can use args from here
end
Para ejecutar esta tarea debes hacerlo así:
$ bin/rake "task_name[value 1]" # entire argument string should be quoted
Encomillar el nombre de la tarea y pasar los parámetros entre corchetes ([]) no es muy bonito, estética pura claro. Así que busqué otra forma y la encontré. Se le pueden pasar los parámetros como variables de entorno. Así:
task task_name: :environment do |t|
arg_1 = ENV['arg_1']
# You can use arg_1 from here
end
Ten en cuenta que debes hacerla dependiente del entorno de ejecución, si no lo haces, cagada pastoret… Ahora la llamda cambia de la siguiente manera:
$ bin/rake task_name arg_1=Value
Es simple y un poco más claro de leer.