Cada Deploy tiene un hostname único guardado en la base de datos
Con esto simplificamos la gestión de nombres de dominio, porque podemos validar en la base de datos que solo hay uno por Deploy. La migración recupera la información que antes guardábamos serializada como JSON en la base de datos.
This commit is contained in:
parent
3e0b94fbce
commit
7cfd55e126
1 changed files with 56 additions and 0 deletions
56
db/migrate/20210801060844_add_hostname_to_deploys.rb
Normal file
56
db/migrate/20210801060844_add_hostname_to_deploys.rb
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# Recupera la funcionalidad que estamos deprecando.
|
||||||
|
module AddValuesToDeploy
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
store :values, accessors: %i[hostname onion], coder: JSON
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Convertir todos los valores serializados de Deploy en una columna,
|
||||||
|
# porque al final el único uso que tuvo fue para guardar los hostnames
|
||||||
|
# alternativos.
|
||||||
|
#
|
||||||
|
# ¡El hostname es único para poder evitar que haya duplicados!
|
||||||
|
class AddHostnameToDeploys < ActiveRecord::Migration[6.1]
|
||||||
|
# Crea una columna temporal y guarda todos los valores. Los traspasa
|
||||||
|
# y luego elimina la columna.
|
||||||
|
def up
|
||||||
|
Deploy.include AddValuesToDeploy
|
||||||
|
# Ya que estamos hacer limpieza.
|
||||||
|
Deploy.where(site_id: nil).destroy_all
|
||||||
|
|
||||||
|
add_column :deploys, :hostname_tmp, :string
|
||||||
|
|
||||||
|
Site.find_each do |site|
|
||||||
|
site.deploys.find_each do |deploy|
|
||||||
|
deploy.hostname_tmp = deploy.values[:hostname] || deploy.values[:onion] || deploy.hostname
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
rename_column :deploys, :hostname_tmp, :hostname
|
||||||
|
remove_column :deploys, :values
|
||||||
|
|
||||||
|
add_index :deploys, :hostname, unique: true
|
||||||
|
# A esta altura todos los dominios deberían estar migrados.
|
||||||
|
change_column :deploys, :hostname, :string, null: false
|
||||||
|
end
|
||||||
|
|
||||||
|
# Recupera los valores desde la columna creada.
|
||||||
|
def down
|
||||||
|
Deploy.include AddValuesToDeploy
|
||||||
|
|
||||||
|
rename_column :deploys, :hostname, :hostname_tmp
|
||||||
|
add_column :deploys, :values, :text
|
||||||
|
|
||||||
|
Site.find_each do |site|
|
||||||
|
site.deploys.find_each do |deploy|
|
||||||
|
deploy.values[(deploy.is_a? DeployHiddenService ? :onion : :hostname)] = deploy.hostname_tmp
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
remove_column :deploys, :hostname_tmp
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue