ruby on rails 3.1 - specific - Rails 3.1 precompilación de activos-incluye todos los archivos javascript
rails y jquery (3)
He modificado el ejemplo dado en la configuración de Rails config.assets.precompile para procesar todos los archivos CSS y JS en app / asset y aquí está mi versión, que toma todos los activos de / app y / vendor excepto los parciales (a partir de _)
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
}
Quiero que Rails 3.1 recoja más de mis activos para la precompilación. En particular, el comparador predeterminado para compilar archivos no agrega archivos .js
del vendor/assets/javascripts
. Solo puedo agregar los recursos a la lista config.assets.precompile
, pero esto parece molesto. No quiero referirme a ellos en el manifiesto application.js
, porque no quiero que se incluyan en todas las páginas.
En resumen, ¿alguna forma de solicitar que todos los archivos .js
que se encuentran en el vendor/assets/javascripts
precompilados por los rake assets:precompile
, pero sin tenerlos incluidos en todas las páginas?
config.assets.precompile
acepta expresiones regulares y coincidencia de caracteres comodín, por lo que para garantizar que todos los archivos js se compilen, sin especificar cada uno de ellos por un nombre, algo como esto debería hacer el truco:
config.assets.precompile << ''*.js''
# Precompile *all* assets, except those that start with underscore
config.assets.precompile << /(^[^_//]|//[^_])[^//]*$/
Consulte el Blog 55minutos para la explicación completa.
Esto precompilará cualquier activo, no solo JavaScript (.js, .coffee, .swf, .css, .scss)