2012-06-19 11 views
5

Z powodzeniem używam potoku aktywów przez wiele miesięcy. Teraz chciałbym załadować niektóre moje pliki JS asynchronicznie (używając biblioteki yepnope). Działa dobrze, gdy config.assets.debug jest config.assets.debug jest config.assets.debug.Potok Rails/Assets: Dynamicznie lista zasobów zawartych w manifeście

Ale w trybie rozwoju (gdzie config.assets.debug zazwyczaj true), najlepszym rozwiązaniem dla mnie byłoby dynamicznie uzyskać listę wszystkich plików js zawartych w mojej manifestach (mam 2 manifesty: application.js i externals.js) dać im yepnope do załadowania asynchronicznego.

Masz pomysł?

Odpowiedz

8

Wreszcie znalazłem odpowiedź, stworzyłem ten pomocnika (czytaj this zobaczyć jak zadeklarować metody pomocnika widocznych podczas kompilacji aktywów)

# given a list of Sprockets manifests, returns a flattened array of dependency paths 
def paths_for_manifests(manifests = []) 
    manifests.map do |manifest| 
    Rails.application.assets[manifest].dependencies.map{|d| "/assets/#{d.logical_path}"} 
    end.flatten 
end 

i używam go tak (z pliku JS/coffeescript):

paths = <%= paths_for_manifests(%w(externals.js application.js)) %> 
Powiązane problemy