2012-06-19 5 views
5

Я успешно использую конвейер активов в течение нескольких месяцев. Теперь я хотел бы загрузить некоторые из моих JS-файлов асинхронно (используя библиотеку yepnope). Он хорошо работает, когда config.assets.debug - false.Конвейеры Rails/Assets: динамически перечислять активы, включенные в манифест

Но в режиме разработки (где config.assets.debug обычно true), лучший вариант для меня будет динамически получить список всех JS-файлы, включенные в моих манифестов (я получил 2 манифестов: application.js и externals.js) чтобы дать им yepnope для асинхронной загрузки.

Любая идея для этого?

ответ

8

Наконец нашел ответ, я создал этот помощник (чтение this, чтобы увидеть, как объявить вспомогательные методы, видимые во время компиляции активов)

# 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 

и я использую его, как это (из файла JS/CoffeeScript):

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

 Смежные вопросы

  • Нет связанных вопросов^_^