5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-22 21:56:21 +00:00
panel/app/jobs/deploy_job.rb

53 lines
1.3 KiB
Ruby
Raw Permalink Normal View History

2019-07-26 00:36:33 +00:00
# frozen_string_literal: true
# Realiza el deploy de un sitio
2019-09-16 16:44:29 +00:00
class DeployJob < ApplicationJob
class DeployException < StandardError; end
# rubocop:disable Metrics/MethodLength
2019-07-26 00:36:33 +00:00
def perform(site)
2019-09-18 19:28:30 +00:00
ActiveRecord::Base.connection_pool.with_connection do
@site = Site.find(site)
@site.update_attribute :status, 'building'
2019-09-18 19:28:30 +00:00
# Asegurarse que DeployLocal sea el primero!
@deployed = { deploy_local: deploy_locally }
2019-07-26 00:36:33 +00:00
2019-09-18 19:28:30 +00:00
# No es opcional
unless @deployed[:deploy_local]
@site.update_attribute :status, 'waiting'
raise DeployException, deploy_local.build_stats.last.log
2019-09-18 19:28:30 +00:00
end
2019-07-26 00:36:33 +00:00
deploy_others
notify_usuaries
@site.update_attribute :status, 'waiting'
2019-09-18 19:28:30 +00:00
end
2019-07-26 00:36:33 +00:00
end
# rubocop:enable Metrics/MethodLength
2019-07-26 00:36:33 +00:00
private
def deploy_local
@deploy_local ||= @site.deploys.find_by(type: 'DeployLocal')
end
def deploy_locally
deploy_local.deploy
2019-07-26 00:36:33 +00:00
end
def deploy_others
@site.deploys.where.not(type: 'DeployLocal').find_each do |d|
@deployed[d.type.underscore.to_sym] = d.deploy
2019-07-26 00:36:33 +00:00
end
end
def notify_usuaries
2019-07-26 00:36:33 +00:00
# TODO: existe site.usuaries_ids?
@site.usuaries.find_each do |usuarie|
DeployMailer.with(usuarie: usuarie.id, site: @site.id)
.deployed(@deployed)
2019-07-26 00:36:33 +00:00
.deliver_now
end
end
end