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

Merge branch 'jekyll-service' into panel.sutty.nl

This commit is contained in:
f 2022-07-12 17:46:51 -03:00
commit aa703cc6e7
2 changed files with 19 additions and 11 deletions

View file

@ -41,14 +41,10 @@ class MetadataFile < MetadataTemplate
end end
# Asociar la imagen subida al sitio y obtener la ruta # Asociar la imagen subida al sitio y obtener la ruta
# # @return [Boolean]
# XXX: Si evitamos guardar cambios con changed? no tenemos forma de
# saber que un archivo subido manualmente se convirtió en
# un Attachment y cada vez que lo editemos vamos a subir una imagen
# repetida.
def save def save
value['description'] = sanitize value['description'] value['description'] = sanitize value['description']
value['path'] = static_file ? relative_destination_path_with_filename.to_s : nil value['path'] = relative_destination_path_with_filename.to_s if static_file
true true
end end
@ -62,9 +58,6 @@ class MetadataFile < MetadataTemplate
# * El archivo es una ruta que apunta a un archivo asociado al sitio # * El archivo es una ruta que apunta a un archivo asociado al sitio
# * El archivo es una ruta a un archivo dentro del repositorio # * El archivo es una ruta a un archivo dentro del repositorio
# #
# XXX: La última opción provoca archivos duplicados, pero es lo mejor
# que tenemos hasta que resolvamos https://0xacab.org/sutty/sutty/-/issues/213
#
# @todo encontrar una forma de obtener el attachment sin tener que # @todo encontrar una forma de obtener el attachment sin tener que
# recurrir al último subido. # recurrir al último subido.
# #
@ -75,14 +68,18 @@ class MetadataFile < MetadataTemplate
when ActionDispatch::Http::UploadedFile when ActionDispatch::Http::UploadedFile
site.static_files.last if site.static_files.attach(value['path']) site.static_files.last if site.static_files.attach(value['path'])
when String when String
if (blob_id = ActiveStorage::Blob.where(key: key_from_path).pluck(:id).first) if (blob_id = ActiveStorage::Blob.where(key: key_from_path, service_name: site.name).pluck(:id).first)
site.static_files.find_by(blob_id: blob_id) site.static_files.find_by(blob_id: blob_id)
elsif path? && pathname.exist? && site.static_files.attach(io: pathname.open, filename: pathname.basename) elsif path? && pathname.exist? && site.static_files.attach(io: pathname.open, filename: pathname.basename)
site.static_files.last.tap do |s| site.static_files.last.tap do |s|
s.blob.update(key: key_from_path) s.blob.update(key: key_from_path)
end end
else
raise ArgumentError, 'No se pudo subir el archivo'
end end
end end
rescue ArgumentError => e
ExceptionNotifier.notify_exception(e, data: { site: site.name, path: value['path'] })
end end
# Obtiene la ruta absoluta al archivo # Obtiene la ruta absoluta al archivo
@ -129,7 +126,7 @@ class MetadataFile < MetadataTemplate
rescue Errno::ENOENT => e rescue Errno::ENOENT => e
ExceptionNotifier.notify_exception(e) ExceptionNotifier.notify_exception(e)
value['path'] Pathname.new(value['path'])
end end
def relative_destination_path_with_filename def relative_destination_path_with_filename

View file

@ -0,0 +1,11 @@
# frozen_string_literal: true
# Cambia el índice único para incluir el nombre del servicio, de forma
# que podamos tener varias copias del mismo sitio (por ejemplo para
# test) sin que falle la creación de archivos.
class ChangeBlobKeyUniquenessToIncludeServiceName < ActiveRecord::Migration[6.1]
def change
remove_index :active_storage_blobs, %i[key], unique: true
add_index :active_storage_blobs, %i[key service_name], unique: true
end
end