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)