mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-16 21:36:21 +00:00
implementa un servicio de carga de archivos en jekyll
This commit is contained in:
parent
29950e4380
commit
3de1228c26
1 changed files with 43 additions and 0 deletions
43
app/lib/active_storage/service/jekyll_service.rb
Normal file
43
app/lib/active_storage/service/jekyll_service.rb
Normal 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
|
Loading…
Reference in a new issue