Ruby on rails 3.1 Rails 3.1资产预编译-包括所有javascript文件

Ruby on rails 3.1 Rails 3.1资产预编译-包括所有javascript文件,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails 3.1,Asset Pipeline,我希望Rails 3.1能够获取更多的资源用于预编译。特别是,编译文件的默认匹配器不会添加来自供应商/assets/javascripts的.js文件。我可以将资产添加到config.assets.precompile列表中,但这似乎很烦人。我不想在application.jsmanifest中引用它们,因为我不希望它们包含在所有页面中 总之,请求在供应商/assets/javascripts中找到的所有.js文件由rake assets:precompile预编译的任何方式,但是没有将它们包含

我希望Rails 3.1能够获取更多的资源用于预编译。特别是,编译文件的默认匹配器不会添加来自
供应商/assets/javascripts
.js
文件。我可以将资产添加到
config.assets.precompile
列表中,但这似乎很烦人。我不想在
application.js
manifest中引用它们,因为我不希望它们包含在所有页面中


总之,请求在
供应商/assets/javascripts
中找到的所有
.js
文件由
rake assets:precompile
预编译的任何方式,但是没有将它们包含在所有页面中?

config.assets.precompile
接受正则表达式和通配符匹配-因此,为了确保编译所有js文件,而不指定每个文件的名称,类似这样的操作应该可以做到:

config.assets.precompile << '*.js'

config.assets.precompile我修改了中给出的示例,这是我的版本,它从/app和/vendor获取所有资产,但部分资产除外(从x开始)

config.assets.precompile
预编译*所有*资产,以下划线开头的资产除外

config.assets.precompile您可能想覆盖预编译中已有的内容:
config.assets.precompile=['*.js','*.css']
。尽管您可能也想为您的图像添加一些内容。@pat实际上,
asset/images
目录中的所有图像都包括在内。这可能是因为它们不需要任何处理。尽管文档中没有提到,但如果查看链轮的代码,您会发现
config.assets.precompile
也接受
Proc
,这意味着你可以做一些像这样的技巧:不确定为什么rake资产:precompile在默认情况下不这样做逻辑上它应该这样做。这很好。有什么理由我不想预编译所有资产吗?@AlexChaffee,如果你正在使用SASS或require注释来准备“捆绑”资产。
config.assets.precompile << Proc.new { |path|
  if path =~ /\.(css|js)\z/
    full_path = Rails.application.assets.resolve(path).to_path
    app_assets_path = Rails.root.join('app', 'assets').to_path
    vendor_assets_path = Rails.root.join('vendor', 'assets').to_path

    if ((full_path.starts_with? app_assets_path) || (full_path.starts_with? vendor_assets_path)) && (!path.starts_with? '_')
      puts "\t" + full_path.slice(Rails.root.to_path.size..-1)
      true
    else
      false
    end
  else
    false
  end
}
# Precompile *all* assets, except those that start with underscore
config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/