2012-06-19 24 views
5

Utilizo con éxito la canalización de activos durante meses. Ahora me gustaría cargar algunos de mis archivos JS de forma asíncrona (usando la biblioteca yepnope). Funciona bien cuando config.assets.debug es false.Tubería de rieles/activos: enumere dinámicamente los activos incluidos en un manifiesto

Sin embargo, en el modo de desarrollo (donde por lo general es config.assets.debugtrue), la mejor opción para mí sería la de obtener dinámicamente una lista de todos los archivos js incluidos en mis manifiestos (Me dieron 2 manifiestos: application.js y externals.js) para darles a yepnope para la carga asincrónica.

¿Alguna idea de hacerlo?

Respuesta

8

encontrado por fin la respuesta, he creado este helper (leer this para ver cómo declarar métodos auxiliares visibles durante la compilación de activos)

# 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 

y lo uso como esto (desde un archivo JS/CoffeeScript):

paths = <%= paths_for_manifests(%w(externals.js application.js)) %> 
Cuestiones relacionadas