Me gustaría subir iconos de imagen como parte de mi tema o plugin (uso ambos). Luego me referiré a ellos desde un componente de Glimmer en el plugin. Necesito poder obtener la URL de la cadena de la ubicación de la imagen, porque la estoy enviando a otro servidor en una solicitud AJAX. (El servidor remoto incrusta iconos en códigos QR, por si quieres saberlo).
Si coloco mis imágenes en about.json en el tema, no se colocan en una ubicación determinista; en cambio, hay un hash en la URL. Así que no sé cómo me referiría a ellas fuera de CSS, y mucho menos en el plugin.
Si coloco mis imágenes en una configuración de administrador para el plugin como una uploaded_image_list, las ubicaciones tampoco son deterministas y, lo que es más, terminan en una matriz sin un nombre/etiqueta/alias legible por humanos para referirse a ellas.
Entonces, ¿hay alguna manera de subir imágenes, ya sea al tema o al plugin, de manera que terminen en una URL determinista?
Esta pregunta también se refiere a cualquier otro activo que una persona quiera subir. Tanto la sección assets de about.json como la función register_asset que se usará en plugin.rbparecen ser capaces de manejar otros tipos de archivos además de fuentes, pero si esos archivos se están subiendo, no tengo idea de dónde están.
Aunque no puedes establecer la URL, esta es determinista, ya que la URL está compuesta por el hash SHA1 del archivo.
Mientras no cambies el contenido del archivo, este debería terminar en
/uploads/<nombre de instancia>/original/1X/1764ca1c70c7f4f7f01da26e702639fd8cfe2bf4.jpeg
o
/uploads/<nombre de instancia>/original/2X/1/1764ca1c70c7f4f7f01da26e702639fd8cfe2bf4.jpeg
o
/uploads/<nombre de instancia>/original/3X/1/7/1764ca1c70c7f4f7f01da26e702639fd8cfe2bf4.jpeg
o
/uploads/<nombre de instancia>/original/4X/1/7/6/1764ca1c70c7f4f7f01da26e702639fd8cfe2bf4.jpeg
(y cuál de ellas depende del número de subidas que ya tengas).
En cuanto a los plugins, los activos fijos (aquellos que no son modificables por la configuración del administrador) tendrán una URL clara.
Puede consultar los inicializadores del plugin Discourse Math:
Los activos en el directorio /public estarán disponibles bajo el nombre del plugin. Estos activos se llaman directamente sin necesidad de registrarse en plugin.rb.