Rails / Assets管道:动态列出清单中包含的资产

时间:2012-06-19 14:13:11

标签: ruby-on-rails asset-pipeline sprockets yepnope

我成功使用资产管道数月。 现在我想异步加载一些我的JS文件(使用yepnope库)。 config.assets.debugfalse时效果很好。

但是在开发模式中(config.assets.debug通常是true),对我来说最好的选择是动态获取我的清单中包含的所有js文件的列表(我有2个清单:应用程序.js和externals.js)将它们提供给yepnope以进行异步加载。

有任何想法吗?

1 个答案:

答案 0 :(得分: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)) %>