Active Job – Ruby on Rails 4.2

Novedades de Ror 4.1 a 4.2

No Hace mucho estuvimos hablando de los cambios que de Ruby on Rails versión 4.1, pues un par de meses después de nuevo tenemos que dar la bienvenida a la nueva versión, con una serie de cambios importantes que iremos descubriendo en CursoDeRails. Para aquellos que estén deseando actualizar sus aplicaciones web a esta nueva versión Rails 4.2, comentarte que primero es importante actualizar a la versión 4.1 y después de comprobar que todo funciona correctamente, te doy permiso para que te aventures en la nueva versión. A continuación en el presente artículo descubriremos una de las novedades de Ror 4.2, Active Job, por hacer un breve resumen sobre su finalidad decir que nos sirve para administrar nuestras colas de trabajo y que se encuentren en la «parte de atrás» sin molestar al funcionamiento normal de nuestro servidor, podemos emplear cualquier gema para administrar colas (al final del artículo comentaré las compatibles), sin que ello requiera un cambio en nuestro código.

¿Pero exactamente que hace ActiveJob?

Básicamente integra una gema para administrar las colas de trabajo, que estos pueden ser script para hacer consultas a la base de datos, script programados con diferentes operaciones, en definitiva, y lo más importante que su ejecución sea en paralelo para que nuestra aplicación web siga funcionando perfectamente sin interferencias, y que las consultas normales a nuestras web no se vean perjudicadas.

¿Pero ActiveJob maneja las colas de procesos?

No, el lo que hace es ayuda a integrar la gemas que realizan esta labor, pero lo importante es que empleemos una gema u otra (la que está implementada por defecto es Sidekiq), tendremos la misma sintáxis la de ActiveJob y si en un momento deseamos cambiarla por otra, nuestro código no se verá afectado.

Configuración de ActiveJob

Como hemos comentado podemos integrarlo con la gema que queramos, para ello una vez que hemos creado nuestro primer job, ejemplo:

rails g job mi_primer

Genera dentro de app/job el archivo mi_primer_job.rb, él automáticamente introduce el prefijo job, para evitar confusión con otros archivos, aunque como lo tenemos en una carpeta no tendremos ese problema.

Ahora podemos insertar desde la carpeta config/initializers crear un archivo para configurar ( active_job_config.rb) Active Job con una de las gemas compatibles, tal como vemos en el ejemplo.

Active::Base.queue_adapter = :inline

Las gemas compatibles con ActiveJob son:

Repetimos…. que no afecta a la sintaxis de ActiveJob, luego podemos implementar en el archivo de trabajo creado el código que deseemos ejecutar una vez que lo llamemos (eso aún no ha pasado, primero le diremos que hará). A continuación cremos nuestro primera clase perteneciente a ActiveJob.

class MiPrimerJob < ActiveJob::Base
  queue_as :default

  def perform(*args)
    # Aquí insertaremos el código a realizar
  end
end

Una vez sabemos que va a realizar nuestro trabajo en cola, desde nuestro controlador podemos llamar a nuestra acción para que se ejecute cuando nosotros le indiquemos. Las posibilidades que nos brinda ActiveJob son ahora, en 10 minutos, después, en un mes… el tiempo que nosotros estimemos oportuno para que ejecute nuestro método.

MiPrimerJob.perform_later parámetros
#Lanzará el trabajo tan pronto como el sistema de colas este vacio

Podemos ver más sentencias desde la página oficial de la gema ActiveJob

Espero que le haya servido para realizar un introducción a Active Job y lo conozca mejor para que pueda incorporar en sus proyecto webs.

Leave A Reply

Tu dirección de correo electrónico no será publicada.