mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-24 23:46:21 +00:00
Merge branch 'jekyll-service' into panel.sutty.nl
This commit is contained in:
commit
aa703cc6e7
2 changed files with 19 additions and 11 deletions
|
@ -41,14 +41,10 @@ class MetadataFile < MetadataTemplate
|
|||
end
|
||||
|
||||
# Asociar la imagen subida al sitio y obtener la ruta
|
||||
#
|
||||
# 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.
|
||||
# @return [Boolean]
|
||||
def save
|
||||
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
|
||||
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 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
|
||||
# recurrir al último subido.
|
||||
#
|
||||
|
@ -75,14 +68,18 @@ class MetadataFile < MetadataTemplate
|
|||
when ActionDispatch::Http::UploadedFile
|
||||
site.static_files.last if site.static_files.attach(value['path'])
|
||||
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)
|
||||
elsif path? && pathname.exist? && site.static_files.attach(io: pathname.open, filename: pathname.basename)
|
||||
site.static_files.last.tap do |s|
|
||||
s.blob.update(key: key_from_path)
|
||||
end
|
||||
else
|
||||
raise ArgumentError, 'No se pudo subir el archivo'
|
||||
end
|
||||
end
|
||||
rescue ArgumentError => e
|
||||
ExceptionNotifier.notify_exception(e, data: { site: site.name, path: value['path'] })
|
||||
end
|
||||
|
||||
# Obtiene la ruta absoluta al archivo
|
||||
|
@ -129,7 +126,7 @@ class MetadataFile < MetadataTemplate
|
|||
rescue Errno::ENOENT => e
|
||||
ExceptionNotifier.notify_exception(e)
|
||||
|
||||
value['path']
|
||||
Pathname.new(value['path'])
|
||||
end
|
||||
|
||||
def relative_destination_path_with_filename
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue