sisè / segona

Soy Víctor Rodríguez, programador web freelance con más de 10 años de experiencia

Sobre rake tasks en Rails 4

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.