Antecedentes¿Cómo cambio el formato de las URL de asset_tag de Rails?
estoy trabajando actualmente en un proyecto de 3 carriles que tengo la intención de utilizar con Amazon CloudFront con un origen a medida que apuntan de nuevo a mi servidor web real. Esto significa que mi servidor web le dirá al navegador que recupere activos estáticos de CloudFront; si CloudFront tiene el elemento almacenado en caché, lo devolverá; si no lo hace, lo recuperará usando la misma ruta desde mi servidor web y luego lo almacenará en caché para el futuro peticiones.
Problema
Amazon CloudFront cae y hace caso omiso de los parámetros de cadena de consulta para determinar si se debe reventar su propia caché para volver a descargar el activo desde su origen. Esto obviamente plantea un problema con la forma en que Rails genera las URL con el RAILS_ASSET_ID
que debe hacer: /assets/path/to/asset.ext?RAILS_ASSET_ID
. Con las URL de activos predeterminadas, CloudFront conservará los activos obsoletos durante hasta 24 horas.
¿Solución?
Lo que espero hacer es anular alguna manera la forma en Rails 3 genera etiquetas de activos para que pueda generar URL como /assets/RAILS_ASSET_ID/path/to/asset.ext
. Ya tengo una solución para hacer que el servidor web responda a esas URL, solo necesito descubrir cómo hacer que Rails genere la URL.
Notas
- Mi
RAILS_ASSET_ID
será una subcadena de mi último git commit hash. Configuración de esto será manejado por capistrano durante el proceso de implementación. Estoy bien con reventar todos los cachés de activos en cada implementación, no necesito ID de activo - Ya he intentado anular
ActionView::Helpers::AssetTagHelper.rewrite_asset_path
pero no pareció funcionar y, por lo que he leído, es un documento privado método que no se debe confiar. - ¡Gracias de antemano!
No estoy muy seguro de cómo me perdí esto, pero lo probaré lo antes posible. –
He confirmado que esta es la solución, gracias por alertarme sobre lo obvio que de alguna manera me perdí. –