informar cuando falla la generación del sitio

This commit is contained in:
f 2019-09-25 19:34:39 -03:00
parent 5c3bdbe4ee
commit b880cdea36
No known key found for this signature in database
GPG key ID: 2AE5A13E321F953D
2 changed files with 27 additions and 20 deletions

View file

@ -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

View file

@ -65,7 +65,7 @@ class Deploy < ApplicationRecord
stat.bytes = size
stat.save
r.try :exited?
r.try :success?
end
# rubocop:enable Metrics/MethodLength
end