Si ya existía algo en el mismo lugar no se puede cambiar el nombre
This commit is contained in:
parent
b20b15317b
commit
3e76ffe4c4
2 changed files with 25 additions and 0 deletions
|
@ -36,6 +36,9 @@ class Deploy < ApplicationRecord
|
||||||
validates :hostname, uniqueness: true
|
validates :hostname, uniqueness: true
|
||||||
# Cada deploy puede implementar su propia validación
|
# Cada deploy puede implementar su propia validación
|
||||||
validates :hostname, hostname: true, unless: :implements_hostname_validation?
|
validates :hostname, hostname: true, unless: :implements_hostname_validation?
|
||||||
|
# Verificar que se puede cambiar de lugar el destino y no hay nada
|
||||||
|
# preexistente.
|
||||||
|
validate :destination_can_change?, if: :destination_changed?
|
||||||
|
|
||||||
# Retrocompatibilidad: Encuentra el site_name a partir del hostname.
|
# Retrocompatibilidad: Encuentra el site_name a partir del hostname.
|
||||||
#
|
#
|
||||||
|
@ -204,6 +207,19 @@ class Deploy < ApplicationRecord
|
||||||
ad.deploy if ad.persisted?
|
ad.deploy if ad.persisted?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Devuelve un error si el destino ya existe. No debería fallar si ya
|
||||||
|
# pasamos la validación de cambio de nombres, pero siempre puede haber
|
||||||
|
# directorios y links sueltos.
|
||||||
|
def destination_can_change?
|
||||||
|
return true unless persisted?
|
||||||
|
|
||||||
|
remove_destination! if broken?
|
||||||
|
|
||||||
|
return true unless exist?
|
||||||
|
|
||||||
|
errors.add :hostname, I18n.t('activerecord.errors.models.deploy.attributes.hostname.destination_exist')
|
||||||
|
end
|
||||||
|
|
||||||
# Convierte el comando en una versión resumida.
|
# Convierte el comando en una versión resumida.
|
||||||
#
|
#
|
||||||
# @param [String]
|
# @param [String]
|
||||||
|
|
|
@ -64,4 +64,13 @@ class Site::DeploymentTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
assert_equal q, site.deploys.count
|
assert_equal q, site.deploys.count
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test 'no se puede cambiar el nombre si ya existía un archivo en el mismo lugar' do
|
||||||
|
assert site.deploy_local.deploy
|
||||||
|
|
||||||
|
new_name = "test-#{SecureRandom.hex}"
|
||||||
|
FileUtils.mkdir File.join(Rails.root, '_deploy', "#{new_name}.#{Site.domain}")
|
||||||
|
|
||||||
|
assert_not site.update(name: new_name)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue