Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
No anidar archivos en el almacenamiento activo de Rails

Parece que, de manera predeterminada, Rails Active Storage anida sus cargas de archivos por medio de la key active_storage_blob asociada.

Las reglas parecen ser las siguientes para el comportamiento predeterminado. Dentro del <Rails.root>/storage/ :

  • toma los dos primeros caracteres de la key y crea un directorio
    • dentro de ese directorio, tome los siguientes dos caracteres de la key y cree otro directorio
      • almacene el archivo allí, y el nombre del archivo es la key completa

Por ejemplo: donde la key de active_storage_blob asociado de un archivo en particular es: 2HadGpe3G4r5ygdgdfh5534346 , se vería así:

Comportamiento predeterminado de anidamiento de almacenamiento activo de Rails

No quiero este comportamiento de anidamiento. Quiero almacenar los archivos planos dentro del directorio de almacenamiento. Así que simplemente quiero que se vea así:

Comportamiento de almacenamiento activo deseado .

¿Cómo puedo hacer eso? Una búsqueda en Google y una lectura completa de Active Storage Rails Guides no revelaron una solución.

También solo por curiosidad: ¿por qué es este el comportamiento predeterminado?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Buscando en el código de ActiveStorage DiskService, encontré el código que genera la estructura de carpetas. Todo está convenientemente contenido dentro de una sola función :

 def folder_for(key) [ key[0..1], key[2..3] ].join("/") end

Esto facilita la eliminación de la estructura de subcarpetas de dos letras con un simple parche:

 module ActiveStorage class Service::DiskService < Service private def folder_for(key) "" end end end

Es mejor hacer algunas pruebas en este parche, pero por lo que pude ver, debería funcionar bien.

La respuesta a la segunda pregunta no pude determinarla simplemente mirando el código de DiskService. No hay pistas sobre esta estructura de carpetas, por lo que las razones pueden estar en otra parte. Se puede hacer completamente con fines estéticos, para evitar un blob gigante de una sola carpeta en servidores grandes. Tal vez alguien que sepa más pueda comentar.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda