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

Chr*_*ris 5 ruby-on-rails yepnope sprockets asset-pipeline

几个月来我成功使用资产管道.现在我想异步加载一些我的JS文件(使用yepnope库).当它运作良好,config.assets.debugfalse.

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

有没有想过这样做?

Chr*_*ris 8

终于找到了答案,我创建了这个帮助器(阅读本文以了解如何在资产编译期间声明辅助方法可见)

# 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
Run Code Online (Sandbox Code Playgroud)

我像这样使用它(来自JS/CoffeeScript文件):

paths = <%= paths_for_manifests(%w(externals.js application.js)) %>
Run Code Online (Sandbox Code Playgroud)