11

¿Hay una gema o método disponible en Rails 3.1 que pueda cargar activos en el frente de la nube de Amazon de forma automática y usarlos en lugar de servir a los alojados localmente? Supongo que es fácil cargar activos compilados manualmente y luego cambiar la configuración de la aplicación de rieles para usar ese host de activos, pero cuando se modifica un activo, las cargas al frente de la nube tendrían que hacerse manualmente de nuevo. ¿Alguna buena forma de salir de esto?Rails 3 despliegue automático de activos a Amazon CloudFront?

Respuesta

8

Eche un vistazo a https://github.com/rumblelabs/asset_sync - lo estamos usando solo para S3, pero supongo que la parte de CloudFront es bastante fácil una vez que los activos están en S3.

Termina siendo una tarea de rake que acaba de agregar para ejecutar en su proceso de implementación.

1

otra opción sería https://github.com/moocode/asset_id, el archivo Léame tiene un ejemplo para usarlo con la nube. Debería funcionar con rails 3.1 pero solo lo he usado en 3.0.x.

Ss John dijo que todas las soluciones terminarían siendo una tarea de rake + un poco de lógica para cambiar la ruta de activos en rieles.

10

Si usa la opción "Origen personalizado" de Cloudfronts, no necesita subir nada, Cloudfront buscará los activos de su servidor cuando sea necesario. Para los detalles de configurar esto, véase:

http://blog.ertesvag.no/post/10720082458

+0

... y para aquellos que utilizan Beanstalk elástica, dados sus activos están propensos previamente compilados por defecto, el servidor nginx les servirá hasta la nube, por lo que debe haber muy pocas consecuencias para este enfoque (la solicitud nunca llega a la aplicación de rieles). – kross

13

Sin duda la salida asset_sync en github. O nuestro artículo de Heroku dev center en Using a CDN asset Host with Rails 3.1 on Heroku.

Hay una gran mejora en el rendimiento al usar asset_sync frente a un origen personalizado CDN, permitiendo a su aplicación compilar los activos de forma perezosa en producción o servirlos precompilados directamente desde los servidores de su aplicación. Sin embargo, yo diría eso. Yo lo escribi.

  • Con asset_sync y S3 se puede precompilar activos que significan todos los activos están ahí listo para ser servido en el host activo/CDN inmediatamente
  • Usted puede sólo requieren los : activos bulto en application.rb de precompilación , ahorrando memoria en producción
  • Sus servidores de aplicaciones NUNCA son golpeados por solicitudes de activos. Puedes gastar un tiempo de cálculo caro, ya sabes. Informática.
  • mejores prácticas cabeceras de caché HTTP estén configurados de forma predeterminada
  • Puede habilitar la compresión gzip automática con una configuración adicional
+0

¿conoce alguna razón por la cual los encabezados de caché HTTP no se establecerían de manera predeterminada? ¿Ahora tienen que configurarse manualmente en el archivo de configuración asset_sync? algo como config.custom_headers = {'Cache-Control' => 'max-age = 315576000', 'Expires' => 1.year.from_now.httpdate} no puedo hacer que los míos establezcan nada ... cualquier ayuda apreciada – Richlewis

Cuestiones relacionadas