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

は、application-be2b8c92856ffacee861d9e9c2935e3eのように新しいファイルを作成しますが、アプリケーション-c730047bc2a5cf3a7​​06aa3a9f998ab77.cssという名前の古いファイルがあります。これ以上使用されることはありません。変更された資産を消去する方法はありますか?私はすべての資産dirを削除したくないので、それは手つかずの(そしてそれはgitで悪いように見える)すべてのファイルの過剰なように思えます。未使用資産をクリアする方法は何ですか?

答えて

2

元のファイルのmd5に基づいていませんか?

これは、ディレクトリ全体を削除してからrake assets:precompileを実行し、ファイルの内容が同じであるため同じファイル名(同じ内容のもの)で終了することを意味します。したがって、git statusは、その店舗に既に存在するファイルと同じであるため、それらの「新しい」ファイルに気付かないでしょう。一部のファイルが削除されたことに気づくだけです。

例:

$ 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

彼らはキャッシュされているもの、またはユーザのブラウザで開いたままにページによって参照される可能性があるため実際にあなたが一般的に周りのいくつかの古い資産のバージョンを維持する必要があります。アセットをパージする前に、ユーザーが1秒間にページを訪れたとします。 HTMLがロードされ、ブラウザが宣言されたスタイルシートとスクリプトを引き続き検索しようとすると、それらはなくなっています。たぶんこれはあなたのコーナーケースですが、HTMLコンテンツがキャッシュから取得された場合(コンテンツの埋め込みなど)、それはまだ数日後に発生する可能性があります。古いコンテンツは中間のどこかにキャッシュされているかもしれませんが、これらのアセットで使用されている積極的なキャッシュでもそれに頼ることはできません。

あなたが本当に望むのは、いくつかの最新バージョンを保ち、本当に古いものを削除することです。そしてそれは正確にはbrake assets:cleanのことです。プリコンパイルする前に、毎回実行することができます。ここにはthe sourceが表示され、2つのバックアップが保持されています。

"2"を0に変更することができれば、それは文字通りこの質問に答えます。その値を変更する方法はわかりませんが、その関数のパラメータであるため、設定が必要です。しかし、関係なく、とにかくそれは良い考えではありません。

関連する問題