2016-06-16 5 views
1

Gibt es eine Art von MD5-Hash oder Cacheschlüssel, der von der Asset-Pipeline generiert wird, die alle Dateien im Ordner "Assets" darstellt? Ich suche nach einer Möglichkeit zu wissen, wann Assets hinzugefügt, entfernt oder zwischen Bereitstellungen aktualisiert wurden.MD5 für die gesamte Asset-Pipeline?

Antwort

0

Ich glaube nicht, dass es solche Cache mit einem einzigen Hash aller Assets gibt. Wenn Sie bei der Produktion Ihre Assets vorkompiliert haben, sollten Sie im Verzeichnis mit den öffentlichen Assets eine sprockets manifest file finden (normalerweise so etwas wie .sprockets-manifest-*randomnumber*.json), aber diese Datei enthält Hashes für alle einzelnen Assets. Sie müssten also alle Hashes vergleichen, um einen Unterschied zu erkennen.

Wenn Sie eigentlich nur Bereitstellungen beschleunigen möchten, werfen Sie einen Blick auf die capistrano-faster-assets gem, die genau das tut - sie vergleicht die Assets von der aktuellen Bereitstellung mit den Assets der vorherigen Bereitstellung. Wenn es keinen Unterschied gibt, wird die Vorkompilierung von Assets übersprungen, was während der Bereitstellung viel Zeit spart. Dieses Schmuckstück verwendet den UNIX-Befehl diff, um die Asset-Verzeichnisse zu vergleichen. Sie können einen Blick in die comparison task source code für Inspiration werfen, wenn Sie etwas anderes als das Juwel tun müssen.