diff --git a/app/jobs/deploy_job.rb b/app/jobs/deploy_job.rb index de50bd14..608b485b 100644 --- a/app/jobs/deploy_job.rb +++ b/app/jobs/deploy_job.rb @@ -2,43 +2,50 @@ # Realiza el deploy de un sitio class DeployJob < ApplicationJob + class DeployException < StandardError; end + + # rubocop:disable Metrics/MethodLength def perform(site) ActiveRecord::Base.connection_pool.with_connection do - site = Site.find(site) - site.update_attribute :status, 'building' + @site = Site.find(site) + @site.update_attribute :status, 'building' # Asegurarse que DeployLocal sea el primero! - deployed = { deploy_local: deploy_local(site) } + @deployed = { deploy_local: deploy_locally } # No es opcional - unless deployed[:deploy_local] - site.update_attribute :status, 'waiting' - raise + unless @deployed[:deploy_local] + @site.update_attribute :status, 'waiting' + raise DeployException, deploy_local.build_stats.last.log end - deploy_others site, deployed - notify_usuaries site, deployed - - site.update_attribute :status, 'waiting' + deploy_others + notify_usuaries + @site.update_attribute :status, 'waiting' end end + # rubocop:enable Metrics/MethodLength private - def deploy_local(site) - site.deploys.find_by(type: 'DeployLocal').deploy + def deploy_local + @deploy_local ||= @site.deploys.find_by(type: 'DeployLocal') end - def deploy_others(site, deployed) - site.deploys.where.not(type: 'DeployLocal').find_each do |d| - deployed[d.type.underscore.to_sym] = d.deploy + def deploy_locally + deploy_local.deploy + end + + def deploy_others + @site.deploys.where.not(type: 'DeployLocal').find_each do |d| + @deployed[d.type.underscore.to_sym] = d.deploy end end - def notify_usuaries(site, deployed) + def notify_usuaries # TODO: existe site.usuaries_ids? - site.usuaries.find_each do |usuarie| - DeployMailer.with(usuarie: usuarie.id, site: site.id) - .deployed(deployed) + @site.usuaries.find_each do |usuarie| + DeployMailer.with(usuarie: usuarie.id, site: @site.id) + .deployed(@deployed) .deliver_now end end diff --git a/app/models/deploy.rb b/app/models/deploy.rb index 81e47e45..6f1f7374 100644 --- a/app/models/deploy.rb +++ b/app/models/deploy.rb @@ -65,7 +65,7 @@ class Deploy < ApplicationRecord stat.bytes = size stat.save - r.try :exited? + r.try :success? end # rubocop:enable Metrics/MethodLength end