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
|
||||
# Cada deploy puede implementar su propia validación
|
||||
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.
|
||||
#
|
||||
|
@ -204,6 +207,19 @@ class Deploy < ApplicationRecord
|
|||
ad.deploy if ad.persisted?
|
||||
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.
|
||||
#
|
||||
# @param [String]
|
||||
|
|
|
@ -64,4 +64,13 @@ class Site::DeploymentTest < ActiveSupport::TestCase
|
|||
|
||||
assert_equal q, site.deploys.count
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue