mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-16 21:36:21 +00:00
44 lines
1.3 KiB
Ruby
44 lines
1.3 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module ActiveStorage
|
||
|
module Service
|
||
|
# Sube los archivos a cada repositorio y los agrega al LFS de su
|
||
|
# repositorio git.
|
||
|
#
|
||
|
# @todo: Implementar LFS. No nos gusta mucho la idea porque duplica
|
||
|
# el espacio en disco, pero es la única forma que tenemos (hasta que
|
||
|
# implementemos IPFS) para poder transferir los archivos junto con el
|
||
|
# sitio.
|
||
|
class JekyllService < Service::DiskService
|
||
|
BLOB_NAME = 'blob'
|
||
|
|
||
|
# Para poder guardar el archivo con el nombre original pero poder
|
||
|
# recuperarlo durante el download, luego de subirlo le cambiamos el
|
||
|
# nombre y creamos un link simbólico a un nombre conocido.
|
||
|
def upload(key, io, checksum: nil, **options)
|
||
|
super.tap do
|
||
|
path = path_for(key)
|
||
|
filename = options[:filename].to_s
|
||
|
|
||
|
FileUtils.mv path, path.sub(/#{BLOB_NAME}\z/, filename)
|
||
|
FileUtils.ln_s filename, path
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Mantener retrocompatibilidad con cómo gestionamos los archivos
|
||
|
# subidos hasta ahora.
|
||
|
#
|
||
|
# @param :key [String]
|
||
|
# @return [String]
|
||
|
def folder_for(key)
|
||
|
key
|
||
|
end
|
||
|
|
||
|
# Crea una ruta para la llave con un nombre conocido.
|
||
|
def path_for(key)
|
||
|
File.join root, folder_for(key), BLOB_NAME
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|