Précompilation des ressources Rails 3.1 – inclut tous les fichiers javascript

Je veux que Rails 3.1 récupère plus de mes actifs pour la précompilation. En particulier, le matcher par défaut pour la compilation des fichiers n’ajoute pas les fichiers .js du vendor/assets/javascripts . Je peux simplement append les ressources à la liste config.assets.precomstack , mais cela semble ennuyeux. Je ne veux pas y faire référence dans le manifeste application.js , car je ne veux pas les inclure dans toutes les pages.

En résumé, tout moyen de demander que tous les fichiers .js trouvés dans vendor/assets/javascripts soient précompilés par les rake assets:precomstack , mais sans les inclure dans toutes les pages?

config.assets.precomstack accepte les expressions régulières et la correspondance avec les caractères génériques – donc, pour vous assurer que tous les fichiers js sont compilés, sans spécifier chacun de leurs noms, quelque chose comme ça devrait faire l’affaire:

 config.assets.precomstack << '*.js' 

J’ai modifié l’exemple donné dans le paramètre config.assets.precomstack Rails pour traiter tous les fichiers CSS et JS dans app / assets et voici ma version, qui prend tous les actifs de / app et / vendor à l’exception des partiels (à partir de _)

 config.assets.precomstack << 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 } 
 # Precomstack *all* assets, except those that start with underscore config.assets.precomstack << /(^[^_\/]|\/[^_])[^\/]*$/ 

Référence le blog de 55 minutes pour l'explication complète.

Cela permettra de précomstackr tous les actifs, pas seulement JavaScript (.js, .coffee, .swf, .css, .scss)