2013-11-04 3 views
5

Verwenden von Rails 3.2.13 Ich bekomme verschiedene Asset-Pfade für asset_path je nachdem, ob ich .css.sass oder nur .css verwende, wird dies erwartet? Verschiedene Asset-Digests abhängig von css.sass oder css

Zum Beispiel, wenn ich nur ein app/assets/stylesheets/foo.css.sass in meinem Sheet-Verzeichnis und nichts anderes haben, wenn ich versehentlich eine asset_path mit der Version sass verwende ich eine Datei zu erhalten, die nicht existiert:

Loading production environment (Rails 3.2.13) 
irb(main):001:0> helper.asset_path "foo.css.sass" 
=> "/assets/foo-b148cf064a02aef053d2902b6a1fa5a9.css" 

Mit asset_path mit nur plain css erzeugt den richtigen Pfad.

irb(main):002:0> helper.asset_path "foo.css" 
=> "/assets/foo-1b1fbb65d54bbc52b702c0f1d2efcc38.css" 

Nur foo-1b1fbb65d54bbc52b702c0f1d2efcc38.css erzeugt wird, wenn i rake assets:precompile laufen. Weiß jemand, woher der unterschiedliche Hash-Wert kommt?

Antwort

0

Schnelle Antwort: Ich denke, dass Hash-Wert aus dem neuesten Zeitpunkt der kompilierten Dateien generiert wird.

Lange Antwort: Ich habe gegraben und kann es nicht bestätigen, aber ich glaube, ich habe gelesen, dass diese Hash-Zeichenfolge aus der letzten Zeit aller Datei (en) generiert wird, die Sie kompilieren möchten.

Also meine Vermutung ist foo.css ist neuer als foo.css.sass und damit gewinnt mtime beim Vorkompilieren.

Wenn Sie weiter in es graben wollen, habe ich es in digest_path Methode innerhalb von digest_for verfolgt.