【问题标题】:Rails / Assets pipeline: Dynamically list assets included in a manifestRails / Assets 管道:动态列出清单中包含的资产
【发布时间】:2012-06-19 14:13:11
【问题描述】:
我已经成功使用资产管道数月了。
现在我想异步加载我的一些 JS 文件(使用 yepnope 库)。当config.assets.debug 为false 时,它运行良好。
但是在开发模式下(config.assets.debug 通常是true),对我来说最好的选择是动态获取清单中包含的所有 js 文件的列表(我有 2 个清单:application.js 和 externals .js) 将它们交给 yepnope 进行异步加载。
有什么想法吗?
【问题讨论】:
标签:
ruby-on-rails
asset-pipeline
sprockets
yepnope
【解决方案1】:
终于找到答案了,我创建了这个助手(阅读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)) %>