2012-06-19 10 views
5

Sto utilizzando con successo la pipeline delle risorse per mesi. Ora vorrei caricare alcuni dei miei file JS in modo asincrono (usando la libreria yepnope). Funziona bene quando config.assets.debug è false.Pipeline Rails/Assets: elenca dinamicamente le risorse incluse in un manifest

Ma in modalità di sviluppo (dove di solito è config.assets.debugtrue), l'opzione migliore per me sarebbe quella di ottenere dinamicamente un elenco di tutti i file js inclusa nella mia manifesta (I got 2 manifesta: application.js e externals.js) per darli a yepnope per il caricamento asincrono.

Qualche idea di farlo?

risposta

8

finalmente trovato la risposta, ho creato questo helper (leggi this per vedere come dichiarare metodi helper visibili durante la compilazione del risparmio)

# 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 

e lo uso come questo (da un file JS/CoffeeScript):

paths = <%= paths_for_manifests(%w(externals.js application.js)) %> 
Problemi correlati