2012-04-30 13 views
5
rake assets:precompile 

crea nuevo archivo, como la aplicación-be2b8c92856ffacee861d9e9c2935e3e, pero hay una edad llamado aplicación c730047bc2a5cf3a706aa3a9f998ab77.css. Nunca se usará más. ¿Hay alguna forma de eliminar los activos modificados? No quiero eliminar todos los activos del directorio, porque eso parece una exageración para todos los archivos que están intactos (y se ve mal en git)¿Cuál es la forma de borrar los activos no utilizados?

Respuesta

2

¿No es el nombre de archivo basado en el md5 del archivo original?

Eso significa que puede eliminar todo el directorio, luego ejecutar rake assets:precompile y dado que el contenido de los archivos sería el mismo, terminaría con los mismos nombres de archivo (con los mismos contenidos). Por lo tanto, su git status no notará esos archivos 'nuevos' ya que son idénticos a los archivos ya existentes en su tienda. Solo notaría que algunos archivos han sido eliminados.

Ej:

$ ls 
application-<md5-old>.css 
application-<md5-current>.css 
$ rm * 
$ rake assets:precompile 
$ ls 
application-<md5-current>.css 
$ git status 
deleted: application-<md5-old>.css 
2

En realidad, usted debe general, mantener algunas versiones antiguas de activos en todo porque podían ser referenciados por algo que se almacena en caché, o una página se ha dejado abierta en el navegador del usuario. Imagínese si el usuario visitó su página un segundo antes de purgar activos. El HTML se carga y cuando el navegador intenta recuperar las hojas de estilo y los scripts declarados, desaparecen. Tal vez este sea un caso de esquina para ti, pero si el contenido HTML proviene de un caché (por ejemplo, tal vez estés contenido de memcaching), aún podría pasar días después. El contenido antiguo puede almacenarse en caché en algún punto intermedio, pero no puede confiar en eso incluso con el almacenamiento en caché agresivo que se usa con estos activos.

Lo que realmente quiere, entonces, es mantener unas últimas versiones y simplemente eliminar las cosas realmente viejas. Y eso es exactamente lo que hace brake assets:clean, que puede ejecutar cada vez que lo desee, antes de precompilar. Aquí está the source mostrando que conserva 2 copias de seguridad.

Si pudieras cambiar ese "2" a 0, respondería esta pregunta literalmente. No estoy seguro de cómo cambiar ese valor, aunque es un parámetro en esa función, por lo que debe ser configurable. Pero independientemente, no es una buena idea de todos modos.

Cuestiones relacionadas