From 339c02c92bf5d465429a65c2d329e714059d33e4 Mon Sep 17 00:00:00 2001 From: f Date: Sat, 14 Aug 2021 20:27:25 -0300 Subject: [PATCH] =?UTF-8?q?Siempre=20vincular=20con=20la=20ubicaci=C3=B3n?= =?UTF-8?q?=20relativa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Para que podamos cambiar la estructura de directorios sin romper los links. --- app/models/deploy_www.rb | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/app/models/deploy_www.rb b/app/models/deploy_www.rb index 3d99a6c..2cfb136 100644 --- a/app/models/deploy_www.rb +++ b/app/models/deploy_www.rb @@ -5,19 +5,24 @@ class DeployWww < Deploy # La forma de hacer este deploy es generar un link simbólico entre el # directorio canónico y el actual. # - # XXX: Asume que el origen y el destino se encuentran en el mismo - # directorio (¿por qué no estarían?) - # # @return [Boolean] def deploy - return true if File.symlink? destination + # Eliminar los links rotos + remove_destination! if broken? - File.symlink(site.deploy_local.hostname, destination).zero? + # No hacer nada si ya existe. + return true if exist? + + # Generar un link simbólico con la ruta relativa al destino + File.symlink(relative_path, destination).zero? end + # Siempre devuelve el espacio ocupado por el link simbólico, no el + # destino. + # # @return [Integer] def size - File.size destination + relative_path.size end # El hostname por defecto incluye WWW @@ -33,4 +38,12 @@ class DeployWww < Deploy def remove_destination! FileUtils.rm_f destination end + + # Obtiene la ubicación relativa del deploy local hacia la ubicación de + # este deploy + # + # @return [String] + def relative_path + Pathname.new(site.deploy_local.destination).relative_path_from(File.dirname(destination)).to_s + end end