From 10580d2b4f169be9643f13c2335d44e3f95a9ef6 Mon Sep 17 00:00:00 2001 From: f Date: Mon, 10 May 2021 10:56:08 -0300 Subject: [PATCH] compilar el sitio de a uno por vez MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit estamos deshabilitando el botón en el panel, pero gracias a la caché (o si le usuarie tiene el botón ya abierto y habilitado) es posible correr dos o más tareas de compilación a la vez, lo que produce errores. por ejemplo, que una compilación falle porque quiere comprimir archivos que ya no están. con este cambio, si un sitio está compilando, la tarea se aplaza un minuto. si hay muchas tareas, eventualmente se harán todas pero no se pisan entre sí. quizás lo correcto sería hacerlo cuando se lanza la compilación también. --- app/jobs/deploy_job.rb | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/jobs/deploy_job.rb b/app/jobs/deploy_job.rb index 98e474ac..e5e051c7 100644 --- a/app/jobs/deploy_job.rb +++ b/app/jobs/deploy_job.rb @@ -8,13 +8,20 @@ class DeployJob < ApplicationJob def perform(site, notify = true) ActiveRecord::Base.connection_pool.with_connection do @site = Site.find(site) - @site.update_attribute :status, 'building' + + # Si ya hay una tarea corriendo, aplazar esta + if @site.status == 'building' + DeployJob.perform_in(60, site, notify) + return + end + + @site.update status: 'building' # Asegurarse que DeployLocal sea el primero! @deployed = { deploy_local: deploy_locally } # No es opcional unless @deployed[:deploy_local] - @site.update_attribute :status, 'waiting' + @site.update status: 'waiting' notify_usuaries if notify # Hacer fallar la tarea @@ -23,7 +30,7 @@ class DeployJob < ApplicationJob deploy_others notify_usuaries if notify - @site.update_attribute :status, 'waiting' + @site.update status: 'waiting' end end # rubocop:enable Metrics/MethodLength