Soportar traslados de imágenes
Ahora estamos haciendo esto:
-
En desarrollo, ponemos las imágenes en el directorio
public/
-
Para habilitarlas en el panel (tanto en producción como en desarrollo) hay que importarlas a Sutty con
Site::StaticFileMigration
que las sube al panel.
La ventaja de subirlas al panel es que ahora quedan disponibles y no hay que hacer malabares cuando las queremos ver (como antes) y también podríamos hacer una biblioteca (#210). Además ahorramos espacio en disco, porque el proceso de subirlas y revincularlas usa enlaces duros (hardlinks) que no multiplican el espacio. Lo mismo al generar el sitio, así que un archivo en Sutty es el mismo en el repositorio y en el sitio (esta relación se pierde al distribuir el sitio obviamente, pero solo distribuimos el sitio generado así que no es un problema).
El problema es que subirlas al panel implica generar registros en la base de datos que no son trasladables. Una migración en mi panel de desarrollo no es la misma que en el de producción o en el de otrx desarrolladorx de Sutty, con lo que siempre hay que hacer las cosas con cuidado. Hasta ahora para probar cosas en mi panel de desarrollo, me hacía un clon descartable del sitio. Desarrollando el sitio localmente mientras está subido al panel no es un problema y venía sincronizando manualmente con rsync.
Además los archivos no están subidos a git porque el repositorio se haría gigante y perderíamos la ventaja de ahorrarnos espacio. Los archivos tienen backup diario.
Estas últimas semanas estuvimos probando git LFS, que sube los archivos a un servidor centralizado (0xacab) y genera unos vínculos solo inteligibles para git. Al obtener una versión de esos vínculos, LFS los descarga desde el servidor como copias locales.
Esto tiene otros problemas:
-
Hay que aprenderse más comandos de git
-
Rugged, la gema de gestión de git que usamos en Sutty no entiende de LFS si quisiéramos integrar
-
Depende de un servidor centralizado (aunque está git-lfs-ipfs para distribuir)
-
Se rompen los links duros entre panel y repositorio (pero no entre repositorio y sitio). Esto no rompe el panel ni el repositorio pero sí empieza a ocupar más espacio en el servidor.
Y además no resuelve el tema de la transportabilidad de las imágenes.
Como máxima quizás estaría bueno subirlos todos a IPFS, porque en teoría un archivo subido a IPFS siempre tiene la misma ubicación (aunque se lo suba varias veces?), con lo que subirlo a git-lfs-ipfs, a Sutty (poniéndole soporte de IPFS a ActiveStorage) o de la forma que sea sería todo lo mismo.
Y para la transportabilidad de la biblioteca quizás habría que delegarla al repositorio, por ejemplo en _data/files/
que se vuelque la información que luego podrían tomar las distintas Suttys para importar los archivos en sus ActiveStorage.