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

crea un nuovo file come application-be2b8c92856ffacee861d9e9c2935e3e, ma ce n'è uno con nome c730047bc2a5cf3a706aa3a9f998ab77.css. Non sarà mai più usato. C'è un modo per ripulire le risorse cambiate? Non voglio cancellare tutte le risorse dir, perché sembra un eccesso per tutti quei file che sono intatti (e sembra cattivo in git)Qual è il modo di cancellare le risorse non utilizzate?

risposta

2

Non è il nome del file basato sul md5 del file originale?

Ciò significa che è possibile eliminare l'intera directory, quindi eseguire rake assets:precompile e poiché il contenuto dei file sarebbe lo stesso, si finirebbe con lo stesso nome file (con lo stesso contenuto). Quindi il tuo git status non noterebbe quei "nuovi" file poiché sono identici ai file già esistenti nel suo archivio. Si noterà solo che alcuni file sono stati cancellati.

Esempio:

$ 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

In realtà si dovrebbe generalmente mantenere alcune versioni di asset vecchi intorno perché potrebbero essere referenziati da qualcosa che è memorizzato nella cache, o una pagina lasciata aperta nel browser dell'utente. Immagina se l'utente abbia visitato la tua pagina un secondo prima di eliminare le risorse. L'HTML è caricato e quando il browser tenta in seguito di recuperare i fogli di stile e gli script dichiarati, sono spariti. Forse questo è un caso d'angolo per te, ma se il contenuto HTML proviene da una cache (ad es. Forse stai memcaching di contenuti), potrebbe ancora succedere giorni dopo. Il vecchio contenuto potrebbe essere memorizzato nella cache da qualche parte nel mezzo, ma non puoi fare affidamento su questo anche con il caching aggressivo che viene utilizzato con queste risorse.

Quello che vuoi veramente, quindi, è di mantenere alcune versioni più recenti e cancellare solo le cose veramente vecchie. Ed è esattamente ciò che fa brake assets:clean, che puoi eseguire ogni volta, se vuoi, prima di precompilare. Ecco the source mostrando che conserva 2 backup.

Se potessi cambiare quel "2" a 0, risponderebbe a questa domanda letteralmente. Non sono sicuro di come modificare quel valore, anche se è un parametro in quella funzione, quindi dovrebbe essere configurabile. Ma a prescindere, non è comunque una buona idea.