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

obtener el nombre de archivo desde la key

esto agrega una query pero permite no tener que agregar una ruta falsa
This commit is contained in:
f 2022-03-06 12:51:06 -03:00
parent 10eef47ce8
commit bfb8e95599

View file

@ -10,8 +10,6 @@ module ActiveStorage
# implementemos IPFS) para poder transferir los archivos junto con el # implementemos IPFS) para poder transferir los archivos junto con el
# sitio. # sitio.
class JekyllService < Service::DiskService class JekyllService < Service::DiskService
BLOB_NAME = 'blob'
# Genera un servicio para un sitio determinado # Genera un servicio para un sitio determinado
def self.build_for_site(site:) def self.build_for_site(site:)
new(root: File.join(site.path, 'public'), public: true).tap do |js| new(root: File.join(site.path, 'public'), public: true).tap do |js|
@ -19,16 +17,7 @@ module ActiveStorage
end end
end end
# 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
end end
@ -41,9 +30,17 @@ module ActiveStorage
key key
end end
# Obtiene el nombre de archivo para esta key
#
# @param :key [String]
# @return [String]
def filename_for(key)
@filename_for ||= ActiveStorage::Blob.where(key: key).limit(1).pluck(:filename).first
end
# Crea una ruta para la llave con un nombre conocido. # Crea una ruta para la llave con un nombre conocido.
def path_for(key) def path_for(key)
File.join root, folder_for(key), BLOB_NAME File.join root, folder_for(key), filename_for(key)
end end
end end
end end