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:
commit
aa703cc6e7
2 changed files with 19 additions and 11 deletions
|
@ -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
|
||||||
|
|
|
@ -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