2022-03-04 22:08:09 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module ActiveStorage
|
2022-03-05 23:08:55 +00:00
|
|
|
class Service
|
2022-03-04 22:08:09 +00:00
|
|
|
# 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
|
2022-03-05 23:09:09 +00:00
|
|
|
# Genera un servicio para un sitio determinado
|
|
|
|
def self.build_for_site(site:)
|
|
|
|
new(root: File.join(site.path, 'public'), public: true).tap do |js|
|
|
|
|
js.name = site.name.to_sym
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-03-04 22:08:09 +00:00
|
|
|
# Mantener retrocompatibilidad con cómo gestionamos los archivos
|
|
|
|
# subidos hasta ahora.
|
|
|
|
#
|
|
|
|
# @param :key [String]
|
|
|
|
# @return [String]
|
|
|
|
def folder_for(key)
|
|
|
|
key
|
|
|
|
end
|
|
|
|
|
2022-03-06 15:51:06 +00:00
|
|
|
# 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
|
|
|
|
|
2022-03-04 22:08:09 +00:00
|
|
|
# Crea una ruta para la llave con un nombre conocido.
|
|
|
|
def path_for(key)
|
2022-03-06 15:51:06 +00:00
|
|
|
File.join root, folder_for(key), filename_for(key)
|
2022-03-04 22:08:09 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|