5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-16 23:16:21 +00:00

implementa un servicio de carga de archivos en jekyll

This commit is contained in:
f 2022-03-04 19:08:09 -03:00
parent 29950e4380
commit 3de1228c26

View file

@ -0,0 +1,43 @@
# 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